图像识别 (easyocr)

Posted 生信狗的日常

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像识别 (easyocr)相关的知识,希望对你有一定的参考价值。

哈哈我们又见面了,今天介绍个简单的图像识别工具easyocr,之前也写过使用python识别图片的包pytesseract,感兴趣的童鞋们可以看我之前写的文章

识别PDF文件图片对象中的字符串(PyMuPDF+pytesseract)
迷途小书生,公众号:生信狗的日常

今天呢,是做一个更新版的图像识别工具介绍,当当当,那就是easyocr模块啦,看名字就知道很easy啦。


关于easyocr

截至目前为止(20210530),Python的OCR库

EasyOCR
https://github.com/JaidedAI/EasyOCR


已经有11.6k star。它可以在python中调用,用来识别图像中的文字,并输出为文本。准确度比pytesseract更高,支持识别的语言也更多,超过80种语言的识别,包括英语、中文(简繁)、阿拉伯文、日文等,并且该库在不断更新中,未来会支持更多的语言。


在安装easyocr模块之前,跟大家多说一句,python安装模块默认用的PyPl源,安装起来可能会耽误些时间,建议大家用清华源安装,几十秒就能安装好。用法很简单:

# pip install -i 镜像地址 安装模块名字,这里以pandas模块为例pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas
  1. 在C盘下的user目录中,新建一个pip文件夹,在此文件夹中,再新建一个pip.ini文件。

  2. 用记事本打开pip.ini文件,也可以用sublime text3 打开,写上如下图所示的语句并保存即可:

[global]index-url =https://pypi.tuna.tsinghua.edu.cn/simple [install]trusted-host = https://pypi.tuna.tsing

然后我们就开始安装easyocr:

# 这两个模块比较大,网络比较差的可以去清华镜像官网搜索下载对应的whl安装包pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torchpip install -i https://pypi.tuna.tsinghua.edu.cn/simple easyocr

一般来说会先下载依赖的torch模块,默认下载的是cpu版本的torch,如果你的电脑支持GPU运算,我们可以去

pytorch官网
​https://download.pytorch.org/whl/torch_stable.html

下载cu版本的torch和torchvision,同时如果你的显卡驱动版本过低还要升级显卡驱动,不过不用搞得这么麻烦,普通的个人电脑使用cpu运算就好啦。


安装成功torch和easyocr模块之后,第二步就调用它们啦,简单来说就是三步:

  • 创建识别对象;

  • 读取并识别图像;

  • 导出文本。


下面我们使用一张示例图片:

这张图片我用本地pytesseract和在线baidu-aip识别过,效果都十分差

这是本地pytesseract识别的结果:

图像识别 (easyocr)

这是在线baidu-aip识别的结果:

图像识别 (easyocr)

大家也看到了,根本没法看的结果!!!


下面我们就调用easyocr识别这个图片看看

BRAVO!!!这也太棒了吧。


不过我们仔细看,还是有点瑕疵的,比如少了某些数据,识别错了某些字符

EasyOCR对于文字(无论英文还是中文)的识别准确率很高,但是对于标点符号与特殊符号的识别准确率很低。此外,该三方库对硬件设备的要求很高,官方推荐支持CUDA的独立显卡可以提高运行效率。随着图片的增大,运行时间呈指数增长。

总体来说,识别率提高了很多,但也不是完美的,对于一些简单的图片文字识别来说足够强大了。

最后贴上完整的脚本吧,很简单的几句:

# https://download.pytorch.org/whl/torch_stable.html 选择cu版本的torch和torchvision,不然只能使用cpu不能使用gpu提升速度# https://github.com/JaidedAI/EasyOCR# 导入easyocrimport easyocr# 创建reader对象reader = easyocr.Reader(['ch_sim','en']) # 读取图像result = reader.readtext('001.png')# 结果ListRes = []for text in result: ListRes.append(text[1]) if text[1]=="否" or text[1]=="是否高危儿": print(ListRes)        ListRes = []

以上是关于图像识别 (easyocr)的主要内容,如果未能解决你的问题,请参考以下文章

EasyOCR简单实用

EasyOCR简单实用

Python easyOCR图像文本提取 初识

Python easyOCR图像文本提取 初识

基于 EasyOCR + HanLp 实现图片文字实体(中文姓名机构名地域名)识别

基于 EasyOCR + HanLp 实现图片文字实体(中文姓名机构名地域名)识别