乐于分享
好东西不私藏

古籍爱好者福音,免费开源pdf转文本ORC,AI转换正确率90%+,手把手教你使用!

古籍爱好者福音,免费开源pdf转文本ORC,AI转换正确率90%+,手把手教你使用!

最近花了两天时间,用开源OCR工具把一部星命学竖版古籍《星命说证正续合编》上下两册、共350多页pdf扫描图片,全部转成了可检索的纯文本,转文本准确率高达90%以上,效果出乎意料。写出来给同样有古籍数字化需求的朋友参考。

先简单介绍下过程,我选用古籍式样如图所示:

我第一次跑出来大概是这样的

但此时千万别灰心,直接把这个文本甩给AI,让它总结原因,调整后重新生成。

第二次跑出来的文本就有模有样了,准确率基本在90%以上,以上的过程是可以批量完成的,下面具体介绍下我的使用心得。


一、开源软件选择——PaddleOCR

市面上OCR方案不少。微信/QQ自带的OCR对印刷体效果不错,但只能单张,没法批量。大部分OCR API对于现代行文效果好但竖版古籍的转换则差强人意,还要花钱,350页下来光调用费就不少。Google的Tesseract对中文识别率偏低,竖版古籍繁体字更是吃力。

最终选了百度的PaddleOCR——完全开源、本地运行、免费、支持繁体中文,而且识别率在中文印刷体上属于第一梯队。

二、安装踩过的坑

几个坑提前说一下,可以节省你不少时间:

1. paddlepaddle版本很关键

最新版3.3.1有bug(PIR/oneDNN相关),3.0.0也有类型错误。测试下来3.2.2是最稳定的版本

pip install paddlepaddle==3.2.2 -i https://pypi.tuna.tsinghua.edu.cn/simplepip install paddleocr -i https://pypi.tuna.tsinghua.edu.cn/simple

国内下载注意用清华镜像,不然下载慢到怀疑人生。

2. 模型下载被墙

PaddleOCR默认从HuggingFace下载模型,但在国内被墙。需要设置环境变量让它走ModelScope:

import osos.environ['PADDLE_PDX_DISABLE_MODEL_SOURCE_CHECK'] = 'True'

模型会自动下载到C:\Users\你的用户名\.paddlex\official_models\,首次运行需要等几分钟。

3. 命令行语法

新版PaddleOCR的命令行语法变了,不是paddleocr --image_path 文件,而是:

paddleocr ocr -i 图片文件

三、古籍OCR的真正难点:竖排混排

现代OCR默认假设文字是横排(从左到右、从上到下),但古籍大量使用竖排(从右到左、从上到下)。更麻烦的是——同一页上经常横排竖排混在一起

我这本《星命说证》就是典型:正文是竖排,但页眉标题、页码、出版信息又是横排。如果简单按坐标从上到下排序,竖排文字会被打散成碎片。

解决方案是根据检测框的宽高比自动判断排版方向

  • 检测框高度 >> 宽度 → 竖排文字
  • 检测框宽度 >> 高度 → 横排文字

然后分别处理:

横排:按y坐标聚类分行,行内从左到右排列。

竖排:按x坐标从右到左排列(古籍阅读顺序),列内从上到下。用y坐标的间距(>100像素的跳跃)来划分不同的段落区块。

代码不到100行就搞定了这个逻辑,实测准确率非常高。

四、参数调优

默认参数的检测阈值偏高,会漏掉很多淡墨、小字的文本块。经过大量测试,最终参数是:

ocr = PaddleOCR( lang='ch', ocr_version='PP-OCRv5', det_db_thresh=0.1,# 检测阈值,默认0.3太高 det_db_box_thresh=0.1,# 框阈值 text_det_limit_side_len=960# 检测边长上限)

关于模型版本:PP-OCRv5_server效果最好。v6虽然更新,但对标点符号的支持反而不如v5——古籍中的句读符号v5能识别出来,v6会漏掉。

个别漏检严重的区域,甚至把det_db_thresh降到0.005才勉强检出,但这时噪声也会增多,需要人工筛选。

五、还有一个坑:双页跨页

古籍扫描经常是双页跨页,一图里有两页内容。处理方法很简单:检测图片宽度,如果x范围超过1000像素,就按中线拆成左右两页分别处理。

六、批量处理的策略

350多张PNG,不可能一张张手动跑。写了个批量脚本,核心逻辑:

  1. 遍历文件夹下所有page_*.png
  2. 按页码排序
  3. 每张图OCR → 自动判横竖 → 排版整理 → 存为txt
  4. 断点续跑
    :先检查txt是否已存在,存在就跳过

这样即使中途断了,重跑也不会重复处理已完成的页面。

对于超长任务(处理到后面每页80-90个文本块,单页要跑很久),还用了定时任务每10分钟自动续跑,真正做到了"丢在那里不管,回来全做完"。

七、效果如何

整体识别率大约在85%-95%之间。繁体字、异体字识别相当不错,印刷清晰的正文基本零错误。主要问题集中在:

  • 极淡的字迹
    :老书墨迹不均,浅色区域容易漏检
  • 极小字号
    :注文小字有时会被忽略
  • 竖排列标题
    :页面边缘的竖排小标题偶尔无法检出
  • 异体字形
    :个别冷僻异体字会识别成近似字

每个txt文件里标注了置信度低于30%的文本行(*LOW标记),方便人工校对时重点关注。

八、总结

两天时间、几乎零花费、350页古籍,从扫描图片变成可全文搜索的txt文本。这个效率在几年前不敢想。

如果你是古籍爱好者,想把自己收藏的PDF/扫描本数字化,PaddleOCR是目前最靠谱的免费方案。


工具:PaddleOCR 3.x + Python + hermes+DeepSeek AI辅助古籍:《星命说证正续合编》霍敏卿著耗时:约10小时(含调试)费用:PaddleOCR免费,AI辅助Token约几块钱

如果你是一位电脑小白也不用怕,可将我的这篇文章发给hermes、trea、codex...等AI智能体,让它按文章去安装相关软件后,执行对应的古籍ORC即可使用。

相关学习资料