古籍 OCR 怎么做?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
手头有一批扫描的古籍图片,想批量把文字提出来存档,但竖排版式、繁体字和纸面污渍让普通 OCR 工具频繁翻车?RapidOCR 是一个开源免费的轻量 OCR 库,把 PaddleOCR 模型转成 ONNX 等通用格式,基于 ONNX Runtime 和 OpenVINO 推理,可以完全离线运行。默认支持中英文识别,也覆盖多语言模型。它适合古籍数字化、文档批量提取文字的场景,使用者从个人研究者到工程集成团队都能用。
📜 一批扫描古籍要提文字,RapidOCR 能做到什么
把场景具体化:一批老书扫描图,每页几十行竖排繁体字,夹杂少量批注,目标是导出可编辑的文本。
- 竖排文字能跑通:识别环节支持竖排文字,预处理阶段会自动做竖排补边(
use_vertical_padding默认开启),短小的文本行也能稳定进入识别流程,仓库测试集里就有竖排古籍图片text_vertical_words.png专门验证这一场景。 - 不止横排印刷体:除了中文简体/繁体和英文,还内置日文、韩文、阿拉伯文、泰文等多语言模型(模型清单见仓库文档),混排页面可以按语言分别跑。
- 不绑死在服务器:同一套模型可以在 Linux、Windows、Mac 上离线推理,Python 之外还有 C++、Java、C# 等语言的独立组件库,方便嵌进现有系统。
🚀 一条命令装好 RapidOCR 环境
Python 3.8 及以上版本,终端执行:
pip install rapidocr onnxruntime安装后模型会随库自动下载,无需额外配置。最小可运行的识别脚本如下(python/demo.py 里有同样的示例):
from rapidocr import RapidOCR engine = RapidOCR() result = engine("book_page_001.jpg") # 换成你的古籍图片路径 print(result) # 文本、坐标框、置信度 result.vis("vis_result.jpg") # 保存带标注框的可视化图print出来的结果包含每行文字、对应的坐标框和置信度分数,vis生成的图可以用来肉眼核对框的位置。
🔤 竖排、繁体和多语言混合:识别能力拆解
竖排文字怎么进识别流程
古籍一列字往往又窄又长,直接切出来喂给模型效果差。RapidOCR 的预处理会对短文本做竖向 padding 补齐,配置项width_height_ratio(默认 8)控制补齐后的宽高比。仓库测试文件 text_vertical_words.png 就是一页竖排字,跑一遍能按行输出识别结果。经验值:扫描件先整页识别,框准了再按列人工归并,比手动切列更省事。
繁体与多语言混合文本
默认模型lang_type为ch,覆盖繁简体混排;遇到日文夹杂的页面,把对应模块的lang_type切到日文模型即可。下面这张日文混合文本的测试图(japan.jpg)就是仓库用来验证多语言识别的样例:
古籍 OCR 准确率对清晰印刷体通常可以到 95% 以上,但手写批注、墨迹粘连的页会明显下降——这类页面建议单独人工处理,而不是调参硬扛。
多平台部署,同一套模型通用
ONNX 格式的模型是核心:Python 包之外,C++(NCNN)、Java、C# 各有独立的移植仓库(见仓库内 cpp/、jvm/、dotnet/ 目录说明),推理引擎可选 ONNX Runtime、OpenVINO、TensorRT、MNN、PaddlePaddle、PyTorch,docker/ 目录为每种引擎都提供了现成的 Dockerfile。Windows、Mac、Linux 三个平台行为一致,适合"Mac 上开发、Linux 服务器跑批"的工作流。
⚙️ config.yaml 里哪些参数值得改
所有可调参数集中在 config.yaml,分Global(总开关与预处理)、Det(检测)、Cls(方向分类)、Rec(识别)四段。常用改动只有三处:
Det.box_thresh(默认 0.5):文字框置信度门槛。古籍扫描件背景脏、检出一堆假框时调高到 0.6~0.7;漏检多则调低。Global.text_score(默认 0.5):识别文本的置信度过滤线,分数低于它的行会被丢弃,想保留低质量行再人工复核就调低。Det.limit_side_len(默认 736):检测图最长边缩放上限。整页高清扫描件(长边超过 2000 像素)处理慢时调小可明显提速,代价是细小文字的检出率略降。
另外Global.use_cls: true建议保持开启,它负责纠正旋转 180° 的文字行——手机随手翻拍的古籍照片经常是倒过来的。
🛠️ 避坑与实操建议
- 扫描件发灰、有污渍 → 先去噪增强再喂给 OCR。对比度差的老书页,用 OpenCV 做二值化或灰度增强后再识别,检出的框会干净很多;
use_preprocess_img默认开启,短边小于 30 像素的碎片图会被自动丢弃,避免无意义结果。 - 结果顺序乱、带坐标残留 → 后处理做格式化。打印出来的结果是按行分段的,竖排古籍需要自己按"从右到左、从上到下"的规则重排行序,再转成纯文本或 Markdown;导出前把坐标框、置信度字段剥掉。
- 低置信度行不要直接入库 → 人工抽检校对。每行都有
text_score分数,把低于 0.7 的行单独列出来过一遍,比全量通读快得多;模糊到整页不可读的部分,宁可标记为"待人工转录"。
适用边界说明
RapidOCR 适合印刷体为主的古籍、档案扫描件批量提取文字,以及需要嵌进自研系统的离线 OCR 场景。它不适合手写批注密集的文献、严重破损缺页的原件——这类内容目前仍依赖专业人工转录,任何模型都不宜作为唯一产出。
【免费下载链接】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),仅供参考