ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Paperless-ngx 中文 OCR 完整配置指南:15 分钟配通 chi_sim 中文包与中文日期识别

Paperless-ngx 中文 OCR 完整配置指南:15 分钟配通 chi_sim 中文包与中文日期识别

Paperless-ngx 中文 OCR 完整配置指南:15 分钟配通 chi_sim 中文包与中文日期识别

【免费下载链接】paperless-ngxA community-supported supercharged document management system: scan, index and archive all your documents项目地址: https://gitcode.com/GitHub_Trending/pa/paperless-ngx

财务的扫描件入库了,搜"发票"却一无所获——因为 Paperless-ngx 用的 Tesseract OCR 引擎默认只带英文语言包。本文带你 15 分钟配通中文识别、中文日期提取和界面汉化。

先看基线:默认状态能干什么、干不了什么

最小可用状态用一条 docker run 就能跑起来。

docker run -d \ -p 8000:8000 \ -v /your/data:/usr/src/paperless/data \ -v /your/media:/usr/src/paperless/media \ -v /your/consume:/usr/src/paperless/consume \ --name paperless-ngx \ paperlessngx/paperless-ngx
  • -p 8000:8000:把容器端口映射到宿主机,http://localhost:8000就是界面入口
  • -v /your/data:...:数据库存放位置,升级时不能丢
  • -v /your/media:...:文档原件和缩略图的存放位置
  • -v /your/consume:...:收件箱,文件丢进去自动 OCR 并入库

启动后打开页面,默认配置下是这样的:

默认能干什么默认干不了什么
英文 PDF、图片入库可搜中文内容识别,搜"发票"必空
文件进 consume 自动 OCR从"2026年8月30日"提取日期
界面英文(可在界面内切换)中文日期解析(dateparser 未指定语言)

看图的关键区域是右上角的文档数量区,消费成功后数字在这里增长;左侧菜单的 Settings 稍后会用到。

⚙️ 核心开关:chi_sim 怎么写、语言包怎么自动装

改什么:PAPERLESS_OCR_LANGUAGE

environment: - PAPERLESS_OCR_LANGUAGE=chi_sim+eng
  • PAPERLESS_OCR_LANGUAGE:告诉 Tesseract 用什么语言读文档,三字母代码,chi_sim是简体中文、eng是英文,多语言用+连接

为什么这么填:Tesseract 按"语言包"工作,没装中文包就一个中文字都读不出来,镜像默认只装了eng。主语言放前面,Tesseract 匹配时优先偏重它;纯中文文档直接写chi_sim即可。

改完看到什么:往 consume 丢一份中文发票 PDF,几秒后入库,搜索框输入"发票"能命中。命不中就跳到文末故障表。

高频笔误:代码必须用下划线,写chi-sim直接报错,官方文档专门加了警示,见 docs/configuration.md。

改什么:PAPERLESS_OCR_LANGUAGES(Docker 部署才需要)

environment: - PAPERLESS_OCR_LANGUAGE=chi_sim+eng - PAPERLESS_OCR_LANGUAGES=chi_sim eng
  • PAPERLESS_OCR_LANGUAGE:同上一节
  • PAPERLESS_OCR_LANGUAGES:容器启动时自动安装的语言包清单,空格分隔,不是+

为什么这么填:chi_sim 包镜像里没有,启动时 init-tesseract-langs 脚本会逐项检查缺失的包并用 apt 装上,不用手动进容器。

改完看到什么:启动日志出现Installed tesseract-ocr-chi_sim;重启后重新消费文档,中文文本可搜。

语言包装多少,看这个量级:

语言包数量安装体积(约)识别速度适合谁
1 种10MB 内快单一语言环境
2~3 种30MB 左右中等主语言加 1~2 个辅助语言
5 种以上100MB 左右慢多语种归档中心

顺手项:中文日期与界面语言,各一行

environment: - PAPERLESS_DATE_PARSER_LANGUAGES=zh+en
  • PAPERLESS_DATE_PARSER_LANGUAGES:日期解析库 dateparser 的语言,zh+en表示中英文

两套体系最容易混:这里两字母(zh/en),OCR 那边三字母(chi_sim/eng),千万别互相抄。不设它会从PAPERLESS_OCR_LANGUAGE推断(逻辑在 src/paperless/utils.py),但显式配置最稳,配好后"2026年8月30日"能被正确提成文档日期。

界面汉化是另一码事:Settings → General → Language 选简体中文,整站立刻切换,每个用户各选各的,互不影响。翻译文件随项目在 src/locale/,不用碰代码。

验收路径:丢文档 → 搜一下 → 点开看日期

一条端到端路线走通,别跳步。

第 1 步,丢文档。把中文发票 PDF 放进 consume 目录。 预期现象:几秒后文档出现在列表里。 不对去哪查:容器是否还在运行、日志有没有语言包缺失的报错。

第 2 步,搜一下。搜索框输入"发票"。 预期现象:命中文档出现,匹配词高亮,点预览能看原件。 不对去哪查:这份文档可能在改配置前就入库了,删掉重新消费,或以 redo 模式重跑 OCR。

看图重点在左侧结果列表和右侧预览窗:每一行是一个命中文档,预览窗直接显示命中片段。

第 3 步,点开看日期。打开文档编辑页,看日期字段。 预期现象:"Created"日期自动填上合同或发票上的日期,微调保存即可。 不对去哪查:日期字段为空或明显错误,先查PAPERLESS_DATE_PARSER_LANGUAGES是否生效。

上图左侧是元数据编辑区(标题、日期、标签),右侧是原件预览,改完保存即生效。

🔧 故障速查:四个高频现象各一招

现象多半原因一招修复
中文搜不到、文本乱码PAPERLESS_OCR_LANGUAGE还是默认eng,或写成了chi-sim改成下划线的chi_sim,重启容器并重新消费文档
容器起不来,日志报语言包安装失败PAPERLESS_OCR_LANGUAGES需 root 执行系统包安装,rootless 模式不支持用 root 运行容器,或自构镜像预装tesseract-ocr-chi-sim
日期字段为空或明显错误日期解析看不懂中文表述显式设PAPERLESS_DATE_PARSER_LANGUAGES=zh+en
混合文档里英文部分大量丢失语言顺序写反,少数派语言被压制主语言放前:chi_sim+eng

边界与人群

适合以中文文档为主、兼有英文材料的个人和团队:财务票据、合同、中英混合的研究资料都能覆盖,多用户各自选界面语言。两条硬边界:低分辨率扫描(低于 150~300 DPI)和手写体,OCR 效果有限,别指望奇迹;中文全文检索没有词干化处理,英文那种 running/run 互相命中的技巧在中文上不适用,这类需求靠标签和自定义字段兜底。

【免费下载链接】paperless-ngxA community-supported supercharged document management system: scan, index and archive all your documents项目地址: https://gitcode.com/GitHub_Trending/pa/paperless-ngx

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进