好久没更新了,但是没更新的这段时间也是写了挺多代码的,最近有空了把这段时间用到的新技术分享一下。这次要分享的是怎么使用 Python 的 EasyOCR 进行图片识别!众所周知很多自动化情景下我们都需要使用到 OCR 技术,比如游戏脚本,扫描文档,提取文字等等, EasyOCR 能帮我们用极少的代码完成文字识别!

安装

我们可以使用以下指令安装 EasyOCR

pip install easyocr

使用

我们在一开始需要先创建 reader,这里我们要传入我们要检测的语言,这里的语言可以传入列表从而可以实现多语言支持,同时我们也可以设置是否需要输出日志,是否需要使用 GPU。

提示:个人实测的时候如果文字比较少的话 CPU 运行速度也够用

import easyocr

reader = easyocr.Reader(['ch_sim','en'], verbose=False, gpu=False)

在创建完 reader 之后我们可以使用 gettext 函数来进行文字识别:

from PIL import Image

image = Image.open("example.png")
result = reader.gettext(image)
print(result)

这里我们一般都是使用 PIL 来打开我们要检测的图片,官方文档里面好像也可以直接传入图片名称。在传入图片之后我们使用 gettext 函数来获取文字内容,具体 result 返回如下格式的内容:

[([[189, 75], [469, 75], [469, 165], [189, 165]], '愚园路', 0.3754989504814148),
 ([[86, 80], [134, 80], [134, 128], [86, 128]], '西', 0.40452659130096436),
 ([[517, 81], [565, 81], [565, 123], [517, 123]], '东', 0.9989598989486694),
 ([[78, 126], [136, 126], [136, 156], [78, 156]], '315', 0.8125889301300049),
 ([[514, 126], [574, 126], [574, 156], [514, 156]], '309', 0.4971577227115631)]

这里的格式其实就是 [(文字区域的四个角的坐标, 具体文字, 置信度), ...],一般来说置信度在 80 以上就可以大致判断是什么文字了。

最后我们只需要配合我们具体的应用就可以了,不过需要注意的是 EasyOCR 因为是基于机器学习的,如果 CPU 很差还没有 GPU 的话可能运行的速度会很慢,这种情况如果是要对实时画面进行 OCR 的话会有延迟,从而导致结果不精确!