简介

Tesseract(/'tesərækt/) 这个词的意思是"超立方体",指的是几何学里的四维标准方体,又称"正八胞体"。右图是一个正八胞体绕着两个四维空间中互相正交的平面进行双旋转时的透视投影。不过这里要讲的,是一款以其命名的开源 OCR(Optical Character Recognition, 光学字符识别) 软件。

所谓 OCR 是图像识别领域中的一个子领域,该领域专注于对图片中的文字信息进行识别并转换成能被常规文本编辑器编辑的文本。

Tesseract 已经有 30 年历史,开始它是惠普实验室的一款专利软件,然后在 2005 年开源,自 2006 年后由 Google 赞助进行后续的开发和维护。

在 1995 年 Tesseract 曾是世界前三的 OCR 引擎,而且在现在的免费 OCR 引擎中,其识别精度也仍然是出类拔萃的。因为其免费与较好的效果,许多的个人开发者以及一些较小的团队在使用着 Tesseract ,诸如验证码识别、车牌号识别等应用中,不难见到 Tesseract 的身影。

官方wiki: https://en.wikipedia.org/wiki/Tesseract_(software)

Tesseract-Ocr并不是一个软件,它是一个软件包,包含了一个OCR引擎【libtesseract】和一个命令行程序 【tesseract】。Tesseract 4增加了一个基于OCR引擎的新神经网络(LSTM),该引擎专注于行级识别,但仍然支持Tesseract 3的传统Tesseract OCR引擎,该引擎通过识别字符模式来工作。

Tesseract-ocr主要仓库

名称 简介
tesseract Tesseract Open Source OCR Engine (main repository)
tesstrain Train Tesseract LSTM with make
tessdata Trained models with support for legacy and LSTM OCR engine
tessdata_contrib User contributed (non google) data repository
langdata_lstm Data used for LSTM model training
tessdata_fast Fast integer versions of trained LSTM models
tessdata_best Best (most accurate) trained LSTM models.

来源: https://github.com/tesseract-ocr/

 训练数据仓库 

  • tessdata_best:基于LSTM引擎的训练数据,最佳最准确的
  • tessdata_fast:基于LSTM引擎的训练数据,快速(精简)版本
  • tessdata:支持双引擎(LSTM和传统引擎),但LSTM训练数据不是最新的版本

推荐使用tessdata_best,虽然识别速度相对于tessdata_fast稍慢,但是准确率可以保证。

获取,安装与配置

Linux

主流的 Linux 发行版都可以通过包管理器来安装 Tesseract,以 Debian 及其衍生版为例:

sudo apt-get install tesseract-ocr

如果想用 Tesseract 对图像进行识别,还需要对应的语言文件。所谓的语言文件是 Tesseract 识别某种语言的文字图像时需要的一些资源,这些东西也可以通过包管理器获取。比如我们需要识别英语和简体中文,那么:

sudo apt-get install tesseract-ocr-eng tesseract-ocr-chi-sim

当然了,这是通过包管理器的方式进行安装,如果需要,还可以通过编译安装的方式来构建最新版的 Tesseract.

Tesseract 的项目托管在 Google Code 上,在下载页面可以自己选择需要的版本,假如我们需要安装 tesseract-ocr-3.02.02.tar.gz 这个版本:

wget https://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.02.tar.gz
tar xzvf tesseract-ocr-3.02.02.tar.gz

Tesseract 的编译需要 automake, autoconf, libtool 支持,所以这几个工具得装上:

sudo apt-get install autoconf automake libtool

当然了, Tesseract 还依赖一些图像库:

sudo apt-get install ligjpeg62-dev libtiff4-dev libpng12-dev libleptonica-dev

注意: 以上安装的包的名称可能在不同发行版上略有不同

需要注意的是,Leptonica 是 Tesseract 的一个比较重要的依赖,而且不同版本的 Tesseract 对 Leptonica 的版本要求也不一样,需要留意包管理器所安装的 Leptonica 版本是否满足要求,如果不满足要求,最好还是下载 Leptonica 的源代码编译安装。

  • Tesseract 3.01: Leptonica 版本不低于 1.67
  • Tesseract 3.02: Leptonica 版本不低于 1.69
  • Tesseract 3.03: Leptonica 版本不低于 1.70

解决依赖后按常规方法编译安装即可:

./configure
make
sudo make install
sudo ldconfig

在 3.03 及以上版本中,用于训练产生语言文件的工具需要单独编译和安装:

make training
sudo make training-install

建议在执行 ./configure 时加上参数 –prefix=xxx 来指定安装路径,这样以后要卸载会方便一些——当然如果这样做的话在安装完后需要做一些额外的工作,包括:

  • 添加 Tesseract 的可执行程序路径到环境变量 PATH 中
  • 在 /usr/include 目录或者 /usr/local/include 目录下建立 Tesseract 安装目录下 include/tesseract 的符号链接
  • 在 /usr/lib 目录或者 /usr/local/lib 目录下建立 Tesseract 安装目录下的 lib 目录下的静态链接库、动态链接库的符号链接

安装完成后,无论是通过包管理器安装的还是通过编译源代码安装的,建立都配置一下 TESSDATA_PREFIX 这个环境变量。在这个环境变量未设置的情况下,Tesseract 将会在安装目录中的 share/tessdata 这个目录下去寻找、加载语言文件,这本身当然没什么问题。

问题在于当我们想添加新的语言文件时,会遇到一些麻烦——程序一般都是安装的系统目录中,也就是说,我们需要提升权限才能将语言文件放到正确的地方。假如是在公司的服务器上进行相关的操作,普通用户一般都是没有 sudo 权限的。将语言文件放置在用户目录中可以解决这个问题,方法是在 .bashrc (假设您使用 bash 作为日常的 shell)中设置

export TESSDATA_PREFIX=$HOME/

如上设置时,将语言文件放在 ~/tessdata/ 下面即可。

Windows

Windows 上的安装也很简单,下载对应的安装程序,双击运行,按照提示进行即可。

注意在 "Language data" 那个选项里,默认是只勾选了英文的,如果需要进行其他语言的识别,记得勾选对应的语言。

再一个是,如果需要进行相应的开发工作,建立把 "Tesseract development files" 这个选项也勾选。

安装完成后如无异常,会将安装目录添加到环境变量 PATH 中,这样就可以在 cmd 中直接运行程序了——Tesseract 并没有提供图形界面的工具,只能在命令行中使用,当然了,我们可以自己编写 GUI 应用程序来调用它,这个准备后面再讲。

命令行使用

这里只简单讲一下 Tesseract 识别图像的基本用法,关于训练和开发将另开新篇来专门讲述。

由于 Tesseract 只提供命令行工具,这里讲到的用法对 Linux 和 Windows 平台都适用。

首先可以通过 "–list-langs" 来查看有哪些可用的 "语言" ,如果之前的 TESSDATA_PREFIX 环境变量没有设置错,将会看到这样的输出:

bash > tesseract --list-langs
List of available languages (17):
math
chi
chi_sim
eng

这里的 "eng" 和 "chi_sim" 是 Tesseract 提供的英文和简体中文的语言文件,而其他的几个则是我自己训练得到的。

另外要说明的是,这里的 "语言文件" 的本质是包含了某种 "自然语言" 的文字的特征等辅助识别的一些资源,但像 chi_sim 这个中文简体里也包含了英文字母与阿拉伯数字的资源。而我们也可以为了特定的用途而去训练产生对应的资源,这里的 "math" 是用于识别简单数学表达式的一个资源,并不是说有一种叫做 "math" 的语言。

如果发现以上命令的输出为空,那应该去检查一下 TESSDATA_PREFIX 这个环境变量。在这个环境变量无误且 "语言文件" 存在的情况下,假设我们有一张名为 paper.png 的图片,则通过以下命令对图片进行识别,

tesseract paper.png paper -l chi_sim
  • 第一个参数是待识别的图像的文件名
  • 第二个参数用于指定输出,如果希望直接输出而不是保存到文件,那么就使用 stdout,否则这个参数将会作为保存结果的文件的前缀
  • -l chi_sim 这个应该很好理解,就是用来指定使用哪个 "语言文件",如果是使用 英文(eng) ,这个参数可以不加,因为默认就是使用英文的 "语言文件" 来进行识别

以上命令如不出错,结果将会保存到 paper.txt 这个文本文件中。

此外 Tesseract 还提供非常丰富的可选参数来对识别过程进行调整,可用的参数及其默认值可以通过以下命令进行查看:

tesseract --print-parameters

参数的使用有两种:

  • 使用 -c 选项来设定单项参数的值,比如:

    tesseract paper.png paper -l chi_sim -c language_model_ngram_on=1
    

    允许使用多个 -c 选项来设置多个参数的值。

  • 将多项参数设置写入文件,然后在识别时使用该文件,比如:

    tesseract paper.png paper -l chi_sim tess.conf
    

    需要注意的是,如果使用配置文件,用作参数的配置文件名要放在最后面——这里也支持多个配置文件,但它们必须要在最后面。假如我有两个配置文件 tess_1.conf 和 tess_2.conf,那么这样是正确的:

    tesseract paper.png paper -l chi_sim tess_1.conf tess_2.conf
    

    而这样则是错误的:

    tesseract paper.png paper tess_1.conf -l chi_sim tess_2.conf
    

至于 Tesseract 那些参数各有什么含义,官方没有提供任何文档来进行解释,这里有一个链接提供了部分参数的用处说明,应该是阅读了 Tesseract 源代码后得到的结论。

Tesseract OCR简介(一)相关推荐

  1. Tesseract OCR简介(三)--安装及参数使用

    参考:AI-Tesseract-OCR简介_花熊的博客-CSDN博客_tesseract坐标 一.windows 1.1 Tesseract安装 适用于Tesseract 3.05和Tesseract ...

  2. jTessBoxEditor for Tesseract OCR

    jTessBoxEditor下载地址 http://vietocr.sourceforge.net/training.html 以下翻译自安装(解压)后的Readme文件 jTessBoxEditor ...

  3. Tesseract OCR与文本智能识别

    博主简介 博主是一名大二学生,主攻人工智能研究.感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c++,Python,爬虫等方面知识的分享. 如果有需要的小伙伴可以关注博主,博主会继续更新 ...

  4. textract_比较亚马逊textract与tesseract ocr ocr nlp用例

    textract What is OCR anyway and why the buzz? Artificial Intelligence (AI) enables entities with Hum ...

  5. Tesseract——OCR图像识别 入门篇

    近期leader给了我一个任务,让我研究图像识别,从我们项目的screenshot中识别文字信息,so我開始了学习.与大家分享下. 我看到眼下OCR技术有非常多,最基本的是Asprise OCR,Te ...

  6. Tesseract OCR——Windows 10 + CMake-GUI + Visual Studio 2019下编译和使用解决方案

    基本概念 Tesseract OCR:Tesseract-OCR 引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一.然而,HP不久便决定放弃OCR业务 ...

  7. C#使用Tesseract OCR 解析验证码

    下面介绍一个开源的OCR引擎Tesseract2.值得庆幸的是虽然是开源的但是它的识别率较高,并不比其他引擎差劲.网上介绍Tessnet2也是当时时间排名第三的识别引擎,只是后来慢慢不维护了,目前是G ...

  8. [转]tesseract OCR Engine overview字符识别学习

    原文地址:http://blog.csdn.net/viewcode/article/details/7790065 正文: 原文: An Overview of the Tesseract OCR ...

  9. android自动识别文字,Android文字识别tesseract ocr -训练样本库 识别字库

    目录 安装tesseract ocr引擎和jTessBoxEditor 安装jTessBoxEditor 开始制作box 准备好训练的图片 将图片转为tif格式的样本图片 合并样本图片 修改box文件 ...

最新文章

  1. idea集成spring+spring MVC+mybatis问题
  2. delphi批量存入多媒体字段 遇到内存溢出的坑
  3. wuhan2020新型冠状病毒防疫信息收集平台社区版非正式发布
  4. Linux vim编辑器常用命令
  5. 更改环境变量JAVA_HOME无效
  6. 玩了一把WOW,贴几张图上来,当然只是私服哈!
  7. Skywalking-11:Skywalking查询协议——案例分析
  8. CSUOJ修墙壁C语言,棋牌挂怎么编写 -棋牌挂怎么编写V6.1.16
  9. 使用countDownLahct模拟多线程并发场景
  10. 零基础学python-5.6 数字位操作与其它工具
  11. 用户节点cdn有什么用处
  12. mysql 分页_MySQL 如何优化大分页查询?
  13. html5图片动且平移,HTML5 Canvas平移,放缩,旋转演示
  14. 前端核心工作内容有哪些?
  15. ActiveMQ反序列化漏洞(CVE-2015-5254)
  16. mysql三表联查sql语句_SQL三表连接查询与集合的并、交、差运算查询
  17. 2019年安徽省程序设计大赛题解
  18. 图像超分之——寻找两张图差异的区域
  19. Linux系统Centos7的虚拟机安装
  20. 想玩IEO又怕跑得慢?LBank的“锁仓释放”了解下

热门文章

  1. H5企业微信如何返回到菜单页?
  2. 刷题/笔试常(自)用模板
  3. “努力就会成功”--左耳朵耗子谈996
  4. Unity特效基础:简易爆炸效果
  5. 【控制】自适应控制,模型参考自适应控制,公式推导,有程序有结果图
  6. 优秀,是一种生活态度
  7. Oracle DBlink创建访问远程数据库
  8. 百度、阿里、小米决战智能音箱
  9. 梯度下降算法原理 神经网络(Gradient Descent)
  10. 租车出行如何避免踩坑,区块链技术解决信任问题