Python受欢迎的原因之一就是其计算生态丰富,据不完全统计,Python 目前为止有约13万+的第三方库。
本系列将会陆续整理分享一些有趣、有用的第三方库。
-
通过百度网盘获取:
链接:https://pan.baidu.com/s/1FSGLd7aI_UQlCQuovVHc_Q?pwd=mnsj
提取码:mnsj
-
前往GitHub获取:
https://github.com/returu/Python_Ecosystem
https://github.com/JaidedAI/EasyOCR
https://www.jaided.ai/easyocr/
pip install easyocr
需要注意的是,EasyOCR是一个基于深度学习的OCR工具,其内部使用PyTorch来构建和训练神经网络模型,从而实现对图像中文字的识别。因此,在使用EasyOCR之前,需要先安装PyTorch。
关于PyTorch的安装可以参看之前发布的文章:
【深度学习(PyTorch篇)】1.PyTorch开发环境准备
-
导入 easyocr 库。 -
初始化一个 Reader 对象,并指定了要识别的语言。该语句用于将模型加载到内存中,此时将自动下载所选语言的模型权重并将其放入“~/.EasyOCR/model “文件夹中(也可以从模型中心手动下载并将其放入相应文件夹中),因此初次运行时需要一些时间,但只需运行一次。 -
读取图像文件,也可以传递 OpenCV 图像对象(numpy 数组)或图像文件字节,而不是文件路。 -
使用 readtext 方法对图片进行OCR。输出结果将以列表形式显示,每个项目分别代表一个边界框坐标、检测到的文本和置信度。
import easyocr
# 初始化 OCR 读取器,指定读取的语言,例如 'ch_sim' 表示简体中文,'en' 表示英文
reader = easyocr.Reader(['ch_sim', 'en '])
# 读取图像文件
image_path = 'path_to_your_image.jpg'
# 使用 OCR 识别图像中的文本
result = reader.readtext(image_path)
reader.readtext('chinese.jpg', detail = 0)
reader = easyocr.Reader(['ch_sim','en'], gpu=False)
另外,由于本次识别的图像中包含中文文本,但是使用更方便的OpenCV库中的 cv2.putText()函数不支持中文,因此本次将使用 PIL库 来标注。
from PIL import Image, ImageDraw, ImageFont
import easyocr
# 使用EasyOCR进行识别
reader = easyocr.Reader(['ch_sim', 'en'])
result = reader.readtext('test.jpg')
# 打开原始图像
image = Image.open('test.jpg')
# 创建一个可以在给定图像上绘图的对象
draw = ImageDraw.Draw(image)
font_path = 'simhei.ttf'# 中文字体文件路径
font = ImageFont.truetype(font_path, 30) # 字体大小为30
# 遍历识别结果,绘制每个文本区域的边界框和文本内容
for (bbox, text, prob) in result:
# bbox 是一个包含四个坐标的列表 [x1, y1, x2, y2]
# text 是识别出的文本
# prob 是识别出文本的概率
top_left = bbox[0]
bottom_right = bbox[2]
# 绘制边界框
draw.rectangle([(top_left[0], top_left[1]), (bottom_right[0], bottom_right[1])], outline=(0, 255, 0), width=2)
# 绘制文本内容
text_x = top_left[0]
text_y = top_left[1] - 15 # 5 pixels above the top of the box
draw.text((text_x, text_y), text, font=font, fill=(255, 0, 0))
# 保存绘制后的图像
image.save('annotated_test.jpg')
# 显示图像
image
识别及标注结果如下图所示:



本篇文章来源于微信公众号: 码农设计师