因为组织上的需要,开始接触OCR技术。在问了Google大叔后,他告诉我去找Tesseract吧,开源界很好用的一个OCR软件。然后我就来了 :)
其实最终是需要用在手机上,但是为了最快速的熟悉一下,决定现在PC(Ubuntu)上体验一下,跑通后再寻求手机上的应用实践。

Tesseract介绍

Tesseract是Ray Smith于1985到1995年间在惠普布里斯托实验室开发的一个OCR引擎,曾经在1995 UNLV精确度测试中名列前茅。但1996年后基本停止了开发。2006年,Google邀请Smith加盟,重启该项目。目前项目的许可证是Apache 2.0。该项目目前支持Windows、Linux和Mac OS 等主流平台。但作为一个引擎,它只提供命令行工具。

下载Tesseract源码

当然,如果你想直接安装也可以:

apt-get install tesseract-ocr

但是这样就无法体会源码编译的快感了啊有木有!!!因为我的测试不是通过直接安装进行的,所以之后写的一些东西可能不适合安装版。

因为Tesseract现在由Google托管,所以其代码官网在google code处:https://code.google.com/p/tesseract-ocr/
由于此网站可能被和谐,所以在这里同时提供直接的源码同步地址:

svn checkout http://tesseract-ocr.googlecode.com/svn/trunk/ tesseract-ocr-read-only

准备工作

这里所说的准备工作包括两个部分,一个是Tesseract所需要的其他配置,另一个是其所依赖的leptonica。

leptonica

官网:http://www.leptonica.org/source/
源码包下载(v1.70):http://www.leptonica.org/source/leptonica-1.70.tar.gz

编译和安装很简单:

./configure && make && sudo make install

同时也可以进行卸载:

sudo make uninstall
其他配置

Tesseract在编译前可以通过autogen.sh进行检查,这一点在INSTALL文档中有提到(后续步骤也存在于这个文档中)。而这里所说的其他配置所指的就是在运行autogen.sh检查过程中的一些提示未找到或未安装的工具等,按照提示信息进行补全。而leptonica在前一个步骤已经编译安装了,相信这里的检查不会提示它的错误。

测试应用

在Tesseract源码目录下有一个testing目录,这个目录下有可以进行测试的文件和脚本。在测试前需要注意的一点是,要设置一个环境变量:

export TESSDATA_PREFIX=where_the_source_root_dir_is

即要将Tesseract源码目录的路径设置到环境变量中。(别忘了设置完后用source命令让其生效)

设置环境变量后,对phototest.tif进行测试:

tesseract phototest.tif output.txt

成功的话phototest.tif图片中的文字内容会被识别出放入output.txt中。

常见问题

  • 提示缺少liblept.so.4,没找到此共享库。
    解决办法:去/usr/local/lib下查看是否真的没有此库,若有(应为link)则尝试将其link到/usr/lib下看是否能修复此问题。
  • 提示下面的错误
    Error in pixReadStreamPng: function not present
    Error in pixReadStream: png: no pix returned
    Error in pixGetInputFormat: pix not defined
    Error in pixRead: image not returned
    Error in fopenReadStream: file not found
    Error in pixRead: image file not found
    在网上搜过后发现一个很有意思的事,因为tesseract是依赖于leptonica的,所以这个问题tesseract的人说是leptonica的问题,而leptonica论坛中则说是tesseract的问题。很搞笑。回到正题,这个问题可能是系统缺少支持库造成的(对,而且没有提示),也可能是leptonica编译的设置问题(新版应该不存在)。套用tesseract论坛中以为热心网友的提示,他的解决办法对我有用:
    I install:
    $ sudo apt-get install libjpeg-dev libpng-dev libtiff4-dev
    $ cd leptonica-1.70
    $ ./configure && make && sudo make install
    $ tesseract -l eng -psm 7 baz.tif foo
    Then it don't report this error any more. However, it recognize nothing in foo.txt
    就是安装必要的库,然后对leptonica进行重编译。我出现过这个问题,就是这样解决的。
GitHub 加速计划 / te / tesseract
60.1 K
9.29 K
下载
tesseract-ocr/tesseract: 是一个开源的光学字符识别(OCR)引擎,适用于从图像中提取和识别文本。特点是可以识别多种语言,具有较高的识别准确率,并且支持命令行和API调用。
最近提交(Master分支:2 个月前 )
bc490ea7 Don't check for a directory, because a symbolic link is also allowed. Signed-off-by: Stefan Weil <sw@weilnetz.de> 4 个月前
2991d36a - 4 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐