OCR应用一例
文章目录
晚上朋友发微信问能否帮忙折腾个东西: 明天需要整理出一份Word文档,大部分内容来自一篇公众号文章,文章内容由一张张图片组成,好几十张,字数很多
朋友的问题是:手动输入太累了,能否帮她用程序把图片内容转成文本,放在Word文档里
我看了下她发过来的公众号文章,内容确实很长,好在虽然用的是图片,字体还算端正。不过用电脑打开后看,字体比较小,不大清晰。
试着折腾了一下,大约花了半小时。记录下过程
思路
从图片中提取出文字内容是个OCR(Optical Character Recognition,光学字符识别)问题
首先想到的是自然是大名鼎鼎的Tesseract
我比较懒,想到现在云端工具那么多,何必为这个小任务多折腾,找个好用的云端工具,5分钟弄好继续看书
准备工作
微信中的图片是webp格式(可以通过chrome调试工具查看),我把整站保存后,资源文件夹中,图片有一堆,不过没带后缀,在ipython中写2行程序为所有文件,加上.webp后缀
捷径
之前在折腾冲顶大会外挂时,觉得百度OCR识别率还不错。为百度OCR做过简单的Python包装,想着用它来试试
当时的百度OCR接口只接收jpg图片,我们先使用ffmpeg吧webp图片转为jpg
ffmpeg -i 640\(1\).webp 01.jpg
ps: 640\(1\)
是微信公众号文章保存后某个图片的默认名字
之后使用百度OCR工具对01.jpg做识别,效果很烂,可能是图片不够清晰或其中字数很多的缘故
我换了其他几个云端OCR工具,效果都不好
正好上个周末在用Tesseract、opencv和树莓派帮朋友折腾个项目:目标是利用树莓派摄像头从身份证中提取信息,对tesseract还算熟悉,于是决定用Tesseract来折腾试试
环境安装
根据你自己的系统,按照官方wiki里的方式安装:tesseract Installation
我用的是mac,使用:brew install tesseract
来安装
我的tesseract版本是
|
|
我们的目标是识别简体中文,如果你不打算自行训练模型的话,可以直接下载官方训练好的
进入到模型存放目录/usr/local/Cellar/tesseract/3.05.01/share/tessdata
,根据系统和tesseract不同,做相应调整。如果你不知道目录在哪儿也没关系,往下读,待会儿在你实际运行命令,缺少相应语言模型的时候,系统会告诉你语言模型该放置的的目录
在这儿下载官方训练好的简体中文模型:wget https://github.com/tesseract-ocr/tessdata/raw/master/chi_sim.traineddata
更多语言模型可以参考tessdata
完成之后,我们就可以使用tesseract在本地提取图片中的文字了
使用tesseract
前边的准备工作中,我们已经从微信公众号下载下来的一堆webp图片转为一堆的jpg图片:01.jpg-020.jpg
我们先来试着将一张图片转为文本内容看看
tesseract -l chi_sim /tmp/01.jpg /tmp/output
ps:如果你没下载chi_sim(简体中文模型),系统会告诉你该在什么目录下放置这个模型
图片里边文字较多,执行识别操作需要一会儿时间,完成后,在本地生成一个output.txt文件,将文本内容对照原图,正确率在90%以上!出错的地方主要是,
容易识别为'
于是我们在ipython中简单写几行来遍历处理所有图片:
|
|
ps: 如果想用更Pythonic的方式使用tesseract,你可以看看pytesseract
洗个澡回来,全部处理完毕,再写个和上边类似的几行代码,把所有output文件粘合起来,放到Word里,任务完成
文章作者 种瓜
上次更新 2018-03-15