玩一把tesseract

tesseract这个东西,之前朋友有个项目,问到我的时候看了一下,因为那个项目难度比较高,不敢接,也就作罢了。这次翻出来看看纯属兴趣 - 感觉手机拍照然后识别些东西,并且联网查询,还是蛮有意思的。

tesseact其实全称是tesseract-ocr,是个自动识别字符的程序,项目网址是:http://code.google.com/p/tesseract-ocr/。虽然其主流平台是三大系统(Win/Linux/Mac OS),但在android和iphone上也是可以跑的 - 这点对我来讲非常重要。
你可以直接想在其命令行工具使用,或者下载其SDK开发自己的程序。

tesseract支持多种语言 - 你只需下载对应的训练过的语言文件即可,并且可以通过config文件来调整行为:比如只识别数字,比如只识别指定的words或者指定的pattern。另外提一下,tesseract只支持字符识别,不支持条形码(barcode)识别【1】

【文档】

比较有用的链接:

【试玩】

我用手机拍了一张双色球的彩票:

 直接识别:

$ tesseract IMAG0409.jpg IMAG0409 -l chi_sim

结果有点惨:

|.1 _>8-二 (樾 Q|. '1'ç ;,2. 4,之 巴)'-j\
虻 号 :s101 0500 » ()帆5
卉奖日朋 20菩2.10.:ö 生趴月亏201z127 上
姜丁琵 日 胴/盯间: 2012.10.26/11:26:26
A) H: 02 04 12 13 16 26
Q CD
"/ 、«
l"〓:广':::广'
Oo'--OO
l3!"'.>'-"]丹'_O
°
l薛
l2 l5 20 “

‘瞒ã
窜ã
薄喃§
薄5涟
'-‘iC-ei-l

如果单独拎出关键信息来识别的话:

 $ tesseract qihao.jpg qihao -l chi_sim

全国朋亏201Z1Z7

$ tesseract qihao.jpg qihao digits

25552012127

可以看出,按中文识别的话,认出了两个字,但后面的数字有差错;按数字识别的话,后面的数字是全对了,但前面把中文也糊弄成数字了(不是它的错) ,所以这里应该可以再分成两步,先按中文找“全国期号”,找到后把后面的内容按数字识别,便得到了这一期的期号(方便联网去取当期的中奖号码)

$ tesseract haoma.jpg haoma

A) HZ 02 04. 12 1316 26

后面的号码对了,但前面分号给识别成了Z,而且04后面多了个点,更严重的是:第二行不见了 - 看来得识别到红球、黑球号码然后分两行处理才行。

结合手机拍照的光线、角度、距离,以及彩票可能的褶皱,旋转,要地位期号、红球、白球并精确识别出号码看来还蛮有挑战性的 - 考虑到彩票对失误零容忍的特点(老子中了500万,你却说没中?!),困难重重啊。


【1】条形码有一维码(竖线)和二维码(方块),一般会在下面标上条形码的号码 - 那是给人看的,而条形码是给机器识别的。很显然,简单的线条或者方块,识别起来比数字要高效与准备的多。

posted @ 2012-11-23 18:06  lzprgmr  阅读(25057)  评论(4编辑  收藏  举报

黄将军