Tesseract OCR

关注
义项:开源光学字符识别引擎
Tesseract OCR

Tesseract OCR(英文:Tesseract)是一个开源的光学字符识别引擎,采用 Apache 2.0 许可发布,可以读取图像中的印刷文字并输出为文本[1]。它最初由惠普实验室在 1985 年至 1995 年间开发,2005 年由惠普与内华达大学拉斯维加斯分校共同开源,此后由谷歌主导后续开发[2][3]。Tesseract 4.0 引入基于长短期记忆网络的新识别引擎,官方模型覆盖 100 多种语言,是使用最广泛的开源光学字符识别引擎之一[1][4]。

百科 图文
目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

Tesseract OCR 是一个开源的光学字符识别引擎,按照 Apache 2.0 许可发布,用于从图像中提取印刷文字[1]。它可以通过命令行直接调用,也提供完整的应用程序接口供程序开发者集成,支持在多种平台上编译运行,包括 Android 与 iPhone 等移动目标[1]。该引擎本身不带图形界面,需要配合第三方外壳程序或自行编写调用代码使用[1]。

在输出方面,Tesseract 能够生成纯文本、hOCR(HTML)、PDF、仅含隐形文字的 PDF 以及 TSV 等格式,并具备 Unicode(UTF-8)支持,可“开箱”识别 100 种以上语言[5]。除预置语言外,它还可以通过训练识别新的语言与字符集[5]。

原理

Tesseract 的识别流程可分为预处理、版面分析和字符识别等环节。输入图像首先被转换为单通道灰度图,以去除颜色噪声对字符边界检测的干扰,随后经过二值化把文字与背景分离,常用的方法有基于局部邻域的自适应阈值和基于类间方差最小化的 Otsu 全局阈值[4]。预处理环节还包括去噪、图像归一化和二值化等步骤,目的是让文字在进入识别阶段前足够清晰[6]。

在识别阶段,Tesseract 3.x 使用的旧引擎通过识别字符形状模板工作,Tesseract 4.0 起新增的引擎则以 LSTM(长短期记忆网络)为基础,按整行文本进行识别[5]。引擎借助训练数据建立的语言模型,在候选字符序列中寻找概率最高的组合,并结合相邻字符与行内上下文来提高准确度[6]。页面分割模式(PSM)参数决定引擎把输入看作整页、单个文本块、整行还是单个字符,从而影响版面分析的结果[6]。

识别结果以词为单位附带 0 到 100 的置信度分数,调用方可以通过设定阈值剔除低分结果,也可以利用输出的块号与行号信息重建原文的排版结构[4]。由于识别质量高度依赖输入图像,实际使用中常把同一张图用不同预处理方案和不同页面分割模式多次运行,再从中挑选最佳结果[4]。

发展历程

Tesseract 的研发始于 1985 年至 1995 年的惠普实验室,并非由谷歌原创[2]。1995 年,它在内华达大学拉斯维加斯分校组织的光学字符识别精度测评中进入前 3 名[2]。此后惠普退出光学字符识别业务,该引擎被搁置多年[2]。

2005 年,惠普与内华达大学拉斯维加斯分校将 Tesseract 开源,谷歌随后接手主要开发工作,并从 2007 年起持续领导其演进[3]。谷歌在 2006 年 8 月 30 日发布公告,说明已与内华达大学的信息科学研究机构合作修复引擎的缺陷并重新以开源形式发布[2]。当时该版本只支持英文,不具备版面分析模块,对多栏排版、灰度与彩色文档的处理效果较差[2]。

2018 年 10 月 29 日,Tesseract 4.0.0 发布,加入基于 LSTM 神经网络的新识别引擎,同时保留按字符形状识别的旧引擎,并更新了构建系统,要求 Leptonica 1.74.0 或更高版本以及支持 C++11 的编译器[7][8]。该版本还新增了用于 LSTM 引擎的训练工具,可在已有模型基础上微调或从头训练,并加入多个语言与脚本的模型数据[7]。

Tesseract 5.0.0 于 2021 年 11 月 30 日发布,成为 5.x 系列的首个稳定版本,由于 C++ 代码现代化改造导致与 4.x 的应用程序接口不兼容,主分支随之采用 5.0.0 语义化版本号[1]。5.x 版本继续扩充语言模型数据,官方模型已覆盖 100 多种语言和 35 种以上文字系统[1]。

应用

Tesseract 常被用于文档数字化,把扫描件、照片中的印刷文字转成可检索、可编辑的文本。它适合处理版式规整的材料,例如票据、单据、表格和书籍页面,也常作为古籍与档案数字化流程中的基础组件[9]。流行的开源电子书与文档处理工具常把它作为文字识别后端。

在工程实践中,Tesseract 通常与其他图像处理库配合使用。开发者先用 OpenCV 一类工具完成二值化、去噪和透视校正,再调用 Tesseract 识别,并通过 Python、Java、C# 等语言的封装接口集成到应用中[9][10]。开源社区还提供了 jTessBoxEditor 等标注与校正工具,用于自定义模型的训练和微调[10]。

除通用文档识别外,Tesseract 也被用于一些专门场景,如移动设备上的文字检测、视频中的文本提取,以及图像型垃圾邮件的识别等[7]。安全研究中也有用它提取图片内文字与链接、辅助分析图像形式垃圾邮件的做法[4]。

局限

Tesseract 的识别效果在很大程度上取决于输入图像的质量与前处理步骤。研究显示,其输出结果高度依赖预处理是否到位,对于点状字体(字母由离散点构成)的印刷材料,如果预处理无法把分散的点连成完整字母,识别准确率会急剧下降。当图片分辨率偏低、光照不均、对比度不足或文字被印章遮挡时,错误率也会明显上升[11]。

手写文字是该引擎的薄弱环节。它最初的设计目标是印刷体,对连笔、不工整、字迹大小与基线不统一的笔迹识别困难,手写内容上的字符错误率可远高于印刷文本[11]。倾斜文本同样会带来问题,常见做法是先估计并校正图像倾斜角度再送入识别。

版面结构的处理也存在限制。早期版本不含版面分析模块,对多栏材料的识别表现不佳[2]。此外,引擎有时会对着彩色背景或标志图案输出毫无意义的字符,需要借助置信度过滤剔除这类结果[4]。有对比研究显示,在低亮度、模糊反光、破损褶皱以及位置不正的图像上,Tesseract 的识别准确率明显低于部分云端商业识别服务[12]。

参见

  • 光学字符识别 —— Tesseract 所属的技术领域,研究如何把图像中的文字转换为机器可读文本。

  • 长短期记忆网络 —— Tesseract 4.0 起采用的识别模型基础,用于按行识别文本。

  • 惠普 —— Tesseract 最初的研发机构。

  • 谷歌 —— 2005 年之后主导 Tesseract 后续开发的公司。

  • Leptonica —— Tesseract 依赖的图像处理库。

  • 页面分割模式 —— 控制 Tesseract 如何划分输入版面的参数选项。

参考资料

  1. Tesseract User Manual [引用日期2026-10-14]
  2. Announcing Tesseract OCR [引用日期2026-10-14]
  3. Open Source OCR Engine [引用日期2026-10-14]
  4. project_report(PDF) [引用日期2026-10-14]
  5. graphics/tesseract - The NetBSD Packages Collection [引用日期2026-10-14]
  6. content [引用日期2026-10-14]
  7. packtpub.com 上的网页 [引用日期2026-10-14]
  8. tesseract [引用日期2026-10-14]
  9. 开源OCR库Tesseract:高效实现文字识别的技术指南 [引用日期2026-10-14]
  10. Tesseract-OCR图片文字识别工具详解 [引用日期2026-10-14]
  11. m_th_e.m.sultanov_2025(PDF) [引用日期2026-10-14]
  12. iaescore.com 上的文件 [引用日期2026-10-14]
词条评价
词条统计

浏览次数:3 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-13T22:03:59Z

历史版本

本条目引用的词条
光学字符识别 惠普 谷歌 长短期记忆网络 Leptonica 页面分割模式