它是个识字引擎,文档管线得自己搭
Tesseract 是开源世界里一大片工具默默依赖的 OCR 引擎。它是一个 C++ 库加一个命令行工具,把文字图像变成字符,也是这一领域里最老的幸存者之一:1980 年代起于 HP,2005 年开源,Google 维护了十年,之后转为社区维护。截至 2026-06 有 74,737 星,仍是 OCR 的默认首选,而且从第 4 版起,它的识别跑在 LSTM 神经模型上,不再是旧的字符匹配。
最能帮人少踩坑的定位是这句:Tesseract 是个识字引擎。它把干净图像里的文字读好;找表格、重建版面、修烂扫描件这些活儿,得靠你或别的工具。
为什么准确率取决于输入
最常见的抱怨,「在真实文档上准确率不行」,几乎总能追到图像质量这一头。引擎多半没问题。Tesseract 想要约 300 DPI、做过二值化、校正过倾斜、去过噪的输入。喂它一张带角度、有 JPEG 压缩的手机照片,结果就崩;先把图清干净,同一个引擎就读得干净。官方指南直白地说:重训练很少有用,真正的增益在预处理。所以怪模型之前,先修图。
安装
Tesseract 从系统包管理器装,Python 用户用 pytesseract 包装:
# Debian/Ubuntu
sudo apt-get install tesseract-ocr libtesseract-dev
# macOS
brew install tesseract
pip install pytesseract pillow
Windows 上常用 UB Mannheim 的安装器,它打包了训练工具。语言数据文件(traineddata)放在一个 tessdata 目录里,这个路径因平台而异,也正是大多数「language not found」错误的根源。
选语言和选模型
两个选择决定结果。语言:为你需要的每种语言装上 traineddata,一起传入,比如 lang='chi_sim+eng'。模型质量:有三套数据。tessdata_fast 最快、最不准,tessdata_best 最慢、最准,也是唯一能微调的,默认的 tessdata 介于两者之间。如果准确率比速度重要,先换成 best,再去试更复杂的招。
适合与不适合
需要印刷体 OCR、又要离线跑、在 CPU 上跑、从服务器到移动二进制都能嵌时,选它;你能控制或清理输入图像时,选它。对支持语言里的干净印刷文档,它又快又准,不要 GPU、不上云。
它不适合手写,它自己的 FAQ 都说手写不是强项;也不适合表格和复杂版面,那要在它上面再叠一个页面分割或文档工具。对野外拍的照片,或深度学习模型更占优的文字系统,下面那几个引擎值得对比。
tesseract 和深度学习 OCR 引擎的对比
| Tesseract | EasyOCR | docTR | PaddleOCR | |
|---|---|---|---|---|
| Stars | 74,737 | 29,616 | 6,140 | 82,109 |
| 引擎 | LSTM,C++ | PyTorch | PyTorch,两阶段 | PaddlePaddle |
| 运行于 | CPU、离线、可嵌入 | CPU 或 GPU | CPU 或 GPU | CPU 或 GPU |
| 强项 | 干净印刷体、轻量 | 开箱多语言 | 可定制管线 | 中日韩强 |
| 弱项 | 手写、表格 | 维护放缓 | 生态较小 | 无 |
数字为截至 2026 年 6 月的 GitHub 数据。EasyOCR 上手更容易、覆盖 80+ 语言,不过维护放缓了。docTR 给你一条可配置的「检测加识别」管线。PaddleOCR 是中日韩文字的强选。Tesseract 的优势是轻量、对 CPU 友好、几乎哪都能部署。
star 曲线
star 曲线反映的是长寿:多年稳步攀升,Tesseract 成了无数工具底下的默认 OCR 依赖。发布仍在继续,5.5 线在 2025 年陆续出版本,这是一个仍在活跃维护的经典。
issue 区与 FAQ 给你的预警
熟悉引擎后,反复出现的主题都在意料之中。准确率问题通常是输入问题,解法在预处理这一步,重训练很少用得上。手写和不常见符号是弱点,LSTM 模型可能误读。阿拉伯语等从右往左的文字偶尔会输出乱序。还有 tessdata 路径绊住语言加载,常见到「显式设 TESSDATA_PREFIX」就是可靠解法。这些都不意外,是一个成熟引擎的已知边界。
相关仓库
要更容易的多语言起步,看 EasyOCR。要可定制管线,看 docTR。要中日韩文字,看 PaddleOCR。要把解析出的文档转成喂 LLM 的 Markdown,看 docling 和 markitdown。想看什么在涨,见 每日榜 和 每周报告。
常见问题
为什么 Tesseract 在我的文档上准确率低? 几乎总是输入。它要约 300 DPI、二值化、校正倾斜、去噪的图像。怪模型之前先清图;官方指南说预处理比重训练有用得多。
Tesseract 还是 EasyOCR,该用哪个? Tesseract 轻量、仅 CPU、对干净印刷体强。EasyOCR 上手更容易、开箱覆盖更多语言,但更重、维护在放缓。离线和嵌入式用 Tesseract,带 GPU 做快速多语言用 EasyOCR。
Tesseract 能读手写吗? 不太行。它的 FAQ 说手写识别不是强项。手写就用 EasyOCR 或 PaddleOCR 这类深度学习引擎起步更好。
tessdata_fast 和 tessdata_best 有什么区别? fast 最快、最不准;best 最慢、最准,也是唯一能微调的;默认 tessdata 介于两者。看重准确率就用 best。
怎么加一种语言? 把该语言的 traineddata 装进你的 tessdata 目录,用 lang 传入,比如 lang='chi_sim+eng'。若报「language not found」,把 TESSDATA_PREFIX 设到正确路径。