tesseract-ocr/tesseract

多媒体与设计

一个长期维护的开源 OCR 引擎与命令行工具,把图片和 PDF 变成可搜索、可复制的文本,适合嵌入脚本和应用。

77,212
10,864
C++
Apache-2.0
创建于 12 年前

如果你需要在自有流程里从图片或扫描 PDF 中提取文字,而不是要一个现成的扫描仪软件,Tesseract 值得认真考虑。它是一个库加命令行工具,README 也坦率说明:通常要先改善图片质量,识别效果才会好。

解决什么问题

你手头积累了一批截图、扫描页或拍摄的文档,想把它们变成可检索的文本,或者做成带文字层的 PDF。手动录入不现实,而调用通用视觉服务可能超出需求或无法离线使用。用 Tesseract 时,改变的只是其中一个环节:通过命令行或 libtesseract 指定图片和语言文件,就能得到纯文本、hOCR、PDF、TSV、ALTO 或 PAGE 等输出,之后可以索引、搜索、复制,或交给其他工具继续处理。

有什么不同

Tesseract 最明显的不同是它定位为可嵌入的引擎,而不是终端产品。仓库提供带 C 和 C++ 接口的 libtesseract,并在插件文档里列出各语言的封装,因此 OCR 这一步可以放进已有应用,而不必被迫另起一个扫描工具。README 称支持 Unicode/UTF-8,开箱即可识别 100 多种语言,对一个本地独立引擎来说覆盖面相当大。

代价是 Tesseract 明确把重心放在行识别上,预处理和纠错留给使用者。项目文档专门有“改善质量”的指南,README 也说很多情况下需要先提升输入图片质量。Hacker News 上的评论也描述了同样的分工:一位评论者称这是自己测试过的最好的引擎,但强调要做透视校正,并用对应语言的词典纠正 i、l、1 这类易混字符(2024-10-08)。较早的讨论里还有人建议先对文档照片做自适应二值化预处理(2021-07-19)。这些是用户对旧版本的个人说法,不是项目承诺,但能说明哪些工作仍留在引擎之外。

谁值得试

适合:开发者要写一个截图索引脚本,或搭建后台流水线,需要离线 OCR、宽松许可证和多种可选输出格式。仓库提供 C/C++ 接口和各语言封装,这意味着你可以把识别保持在进程内,或放进一个小服务里。也适合只想把 PNG 转成带隐藏文字层 PDF 的人:有评论者就在 macOS 上用 Homebrew 安装的命令行工具完成了这类操作(2021-07-19)。

不适合:想要一个带版面分析、图像清理和图形界面的桌面扫描应用的人。README 明确说项目不包含 GUI,只把用户引向第三方项目。同样,如果你的输入是随手拍的照片,又没法加预处理,文档里关于质量的提醒就会成为主要障碍。

使用条件与边界

Tesseract 用 C++ 编写,依赖 Leptonica 打开图片,所以自己编译需要受支持的编译器和相应图像库。发行版或预编译包能省去编译,但实际带哪些语言数据取决于打包方。语言支持并不内置在引擎里:每种语言都要单独安装 traineddata 文件,使用旧版引擎模式还需要支持该模式的数据文件。多语言项目因此要提前规划数据文件的获取和版本管理,而不只是装二进制。

持续成本主要在图片质量上。透视校正、二值化和词典纠错都不会自动完成,项目把用户引向质量指南,并没有承诺原始图片的识别精度。训练新文字系统虽有文档,但是另一套更重的工作流。项目没有内置 GUI 和应用层,面向用户的扫描体验需要你自己搭。

HotRepo 点评

HotRepo 对这个仓库只有一个观测到的每日榜单日期:2026-10-28,当天 77,212 星、增加 26 星,无法从这个样本判断趋势方向。更有用的信号是仓库年龄:README 追溯到 1980 年代惠普实验室,2006 到 2017 年由 Google 开发,5.0.0 版本发布于 2021 年 11 月。如果你打算长期嵌入这个工具,真正该核对的是你需要的语言和输出格式是否有对应的 traineddata,而不是星数。

项目源码与说明

本文由 AI 根据项目 README 生成,更新于 2026年10月28日,以项目官方文档为准。

Hacker News 讨论

Tesseract OCR
▲ 223 · 64 条评论 · 2021年7月18日
Tesseract: Open-Source OCR Engine for High-Accuracy Text Recognition
▲ 5 · 1 条评论 · 2024年10月8日
Tesseract OCR 5.0
▲ 5 · 1 条评论 · 2021年12月1日