尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

从扫描件到可编辑文本:RapidOCR 古籍竖排文字识别实战指南

从扫描件到可编辑文本:RapidOCR 古籍竖排文字识别实战指南 从扫描件到可编辑文本RapidOCR 古籍竖排文字识别实战指南【免费下载链接】RapidOCR Awesome OCR multiple programing languages toolkits based on ONNX Runtime, OpenVINO, MNN, PaddlePaddle, TensorRT and PyTorch.项目地址: https://gitcode.com/GitHub_Trending/ra/RapidOCR你手里有一批古籍扫描件竖排成列、繁体用字、纸边泛黄起斑任务是把它们变成可检索、可编辑的文本。这篇文章用RapidOCR——基于 ONNX Runtime、OpenVINO 等多推理引擎的跨平台 OCR 库——走一遍完整流程。古籍 OCR 里最容易卡壳的竖排文字识别它的检测/分类/识别流水线原生就能处理。先说清楚RapidOCR 是什么谁该用RapidOCR 是一个纯推理的 OCR 库喂给它一张图它返回文字内容、置信度和坐标文本检测、方向分类、文本识别三段模型都可以单独换引擎支持 onnxruntime、OpenVINO、PaddlePaddle、MNN、PyTorch、TensorRT 六种按硬件选。它替你省掉两类活不用碰训练和模型转换模型首次运行时自动下载Python API 返回的是结构化结果对象批量化数字化脚本里直接取字段就行。适用人群做文档数字化、需要把扫描件或照片转成文本、以及给内部文档库做检索的开发者。Python 入口在 python/rapidocr/现成示例见 python/demo.py。一行命令装环境三行代码跑起来 pip install rapidocr onnxruntime最小可运行示例from rapidocr import RapidOCR engine RapidOCR() print(engine(scan.png).to_markdown()) # 直接按阅读顺序输出文本首次运行会把三段模型下载到本地 models 目录默认为包内目录所以第一次会慢一些之后全部走本地推理。想换语言、换模型档位构造时传params即可不用改源码。功能实战按“识别 → 调参 → 校验”三步走第一步把一页竖排扫描件跑通调用engine(图片路径)返回一个结果对象里面就三样东西result.txts每行文字result.boxes/result.scores每行文本框坐标与置信度result.vis(vis.jpg)存一张标注图肉眼核对框的位置。如果扫描件里混有日文、韩文等文字把Rec.lang_type切到对应语言也有多语言模型可用。中日混排的效果类似这样竖排识别参数怎么调很多人以为竖排要单独换“竖排模型”RapidOCR 不是这么做的它靠两个内置机制实现见 python/rapidocr/utils/process_img.py纵向补齐输入图宽高比超过Global.width_height_ratio默认 8、或高度低于Global.min_height30 像素时自动在上下补白避免细长的竖排图在检测预处理里被缩得太小、笔画糊掉。对应开关是Global.use_vertical_padding默认开启。文本行自动转正检测到的高宽比大于 1.5 的文本框裁剪后会先旋转 90° 再送识别器——竖排文字实际是“转正后按横排识别”所以竖排布局开箱就能用。调参集中在 python/rapidocr/config.yaml常用项参数默认值什么时候动它Global.text_score0.5误检行偏多时升到 0.60.7Det.box_thresh0.5漏掉整列小字时降到 0.30.4同时盯紧误检Global.max_side_len2000大幅面、小字号扫描件调大以保留细节Rec.lang_typechch 词表覆盖多数古籍用字繁体为主的页面可试chinese_chtRec.model_typesmall精度优先换 server/medium 档速度优先换 mobile/tiny 档不落地改文件、直接内联传参是最常用的调法RapidOCR(params{Global.text_score: 0.6, Det.box_thresh: 0.4})结果校验逐字框与排版还原交付前一定要抽查两个内置工具最实用逐词框engine(img, return_word_boxTrue)会返回逐词中文常细到逐字的框再开return_single_char_boxTrue更细。拿它核对单字有没有被错拆或错并比只看整行结果可靠排版还原result.to_markdown()按坐标分行、按位置排序还原文本的大致阅读顺序result.to_json()给原始坐标方便自己重排。竖排的“从右到左列、列内从上到下”这个阅读顺序最稳的做法是拿boxes自己做排序先按右边界给每列归组再在列内按上边界从上到下排。to_markdown()可以先出一版底稿拿去和原书对读。三个高频坑现象 → 原因 → 解法 ⚠️坑 1输出的字是倒的或者整页乱读现象个别行识别出乱码标注图里文本行上下颠倒。原因扫描件本身转了 180°手机拍照带 EXIF 方向信息时特别常见方向分类器没有触发。解法保持Global.use_cls开启让分类器自动转正默认阈值Cls.cls_thresh为 0.9如果整批图都是倒的在导入环节统一旋正别指望模型兜底。坑 2页面上的细小文字漏检甚至整列缺失现象大字全部检出底栏小注或窄栏是空的。原因检测前图片会被缩进max_side_len以内小字在检测分辨率下已经只剩几个像素或者box_thresh偏高把弱文本框滤掉了。解法先调大Global.max_side_len和Det.limit_side_len保住分辨率不够再把Det.box_thresh降到约 0.30.4。用vis()的标注图确认是“没检出来”还是“检出来没认对”两者的调法完全不同。坑 3竖排的行序是乱的现象字基本都认对了但列的顺序对不上原书。原因模型的输出粒度是“单条文本行”跨列的阅读顺序它不负责。解法把boxes当坐标集合自己排序或者先用to_markdown()出粗稿再人工修。没有任何一个参数能直接输出正确的列序这条要提前写进你的流程。收个尾把流程跑通、按页面类型调参、用逐字框逐页校验这条路就通了。更多示例与回归测试用例直接看仓库python/README.md、python/demo.py以及 python/tests/test_files/ 下的多语言与排版样本引擎差异和 Docker 部署参考 docker/README.md 与 docs/。【免费下载链接】RapidOCR Awesome OCR multiple programing languages toolkits based on ONNX Runtime, OpenVINO, MNN, PaddlePaddle, TensorRT and PyTorch.项目地址: https://gitcode.com/GitHub_Trending/ra/RapidOCR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表