最近在爬一个网站,找了数据老半天突然发现原来人家不是用数据传输过来的,而是用png背景透明的图片传输过来的,这把我气的不轻。不过发现了是图片就好说,图像文字识别呗,结果发现,这玩意儿里面又有坑等着我。
1.首先我排除了tesseract,因为这个项目我最后要部署到Linux上,但是这个部署过程有点繁琐,因为这个项目的特殊性,我要以效率为主(虽然最后下来其他方法的探索上没少浪费我时间)
2.调用百度接口。这里具体下来就是百度智能云里有一些接口每个月免费1000次可以用。具体什么去百度智能云申请账号,实名注册网上很多,就不多说了,整个下来识别任何普通图片之类的完全OK,但是这个项目不行,问题出在了哪里?总是返回{'log_id': 1478028467765201250, 'error_msg': 'image format error', 'error_code': 216201}。大改理解一下就是图片尺寸问题,这个项目中的图片有点让人无语的地方就是特别小,浏览器上打开还没我的小指头的指甲盖大,
所以我就又用python修改了图片尺寸,代码如下:
def ResizeImage(filein, fileout, width, height, type): from PIL import Image img = Image.open(filein) out = img.resize((width, height),Image.ANTIALIAS) #resize image with high-quality out.save(fileout, type)
filein====》目标文件
fileout===》结果文件
width, height =====》图片尺寸
type=====》图片类型
但是这样的结果又有个问题,每个图片里内容不统一,有些里面只有四个字,有些两个字,啊这样下去,难道让我逐个调节尺寸大小吗?
3.后来我水了这么多的群,终于在群里有位大佬指点我,让我用muggle_ocr库,这个库效果很不错,很多人眼看不清的都能识别出来。但是这个库用起来也不是一帆风顺。比如最开始的安装这个库,直接用pip insyall muggle_ocr是安装不了的,先安装这五个依赖(tensorflow、numpy、opencv-python、pillow、pyyaml)。下载pip install muggle_ocr的时候总是报错,推荐使用国外镜像源。这里因为我的粗心又耽搁了一点时间,找朋友询问还被我那位李姓朋友忽悠走了一杯奶茶才告诉我原因。
李某人,我说过我会把你写进我的博客里,而且是单独占一行
pip3 install muggle_ocr -i https://mirrors.aliyun.com/pypi/simple/ 输入这行命令就欧了。
这里额外再说句,因为我用的是Mac,最开始买来的时候是个菜鸟,Mac自带的是python2,我下载了python3,最后pip设置的时候,由于操作失误把pip和pip3都导入到了python2里,而muggle_ocr适用的版本是python3 ,最后只得去终端找到python3,输入:./pip3 install muggle_ocr -i https://mirrors.aliyun.com/pypi/simple/。这样就好了,也懒得去重新把pip3软连接什么的了,可能菜鸟的世界因为菜也有勤劳的一面吧。
最终结果:
import muggle_ocr
sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)
root_dir = r"y.png" with open(root_dir, "rb") as f: b = f.read() st = time.time() text = sdk.predict(image_bytes=b) print(text, time.time() - st)
番外篇幅(关于离线安装python包的过程):
1.下载包,不知道哪里下载?去镜像源里找,找到先下载下来
2.双击解压
3.到文件目录下,输入。。。。。。下载再更吧,我好像忘了,宁可写错也不乱写。