玩一把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】
【文档】
比较有用的链接:
- FAQ:http://code.google.com/p/tesseract-ocr/wiki/FAQ
- 命令行程序帮助:http://tesseract-ocr.googlecode.com/svn/trunk/doc/tesseract.1.html
- 基于tesseract开发的软件:http://code.google.com/p/tesseract-ocr/wiki/3rdParty
- tesseract提供的工具与各种语言的API:http://code.google.com/p/tesseract-ocr/wiki/AddOns
【试玩】
我用手机拍了一张双色球的彩票:
直接识别:
$ 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】条形码有一维码(竖线)和二维码(方块),一般会在下面标上条形码的号码 - 那是给人看的,而条形码是给机器识别的。很显然,简单的线条或者方块,识别起来比数字要高效与准备的多。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?