赞
踩
毫无疑问的是,关于人工智能方向,python真的十分方便和有效。
这里呢,我将介绍python众多OCR模块中一个比较出色的模块:cnocr
cnocr是一个基于PyTorch的开源OCR库,它提供了一系列功能强大的中文OCR模型和工具,可以用于图像中的文字检测、文字识别和文本方向检测等任务。它可以识别各种不同风格和字体的中文文字,包括简体字和繁体字,可根据具体需求在官方文档中查找对应的模型作为参数输入实例化cnocr方法。官方也提供有英文的识别模型,但其他语言就暂时没有更多的模型,但可以根据自己的需要和自己准备的数据集对模型进行训练。
项目地址:https://github.com/breezedeus/CnOCR
cnocr的开发目标就是“使用简单”,因此,你仅仅需要一些简单的操作便能够完成ocr工作。
安装基本上无坑,pip直接就装上了
pip install cnocr
这里是一个简单的例子:
这是项目目录,sample.py是demo脚本,images里装着需要识别的图片,outs是处理后的图片:
这是sample.py的代码
- from cnocr import CnOcr
- import cv2
- from PIL import Image, ImageDraw, ImageFont
-
- FONT_STYLE = ImageFont.truetype("msyhl.ttc", 30, encoding="utf-8")
-
- # 图片名称
- file_name = 'images/img.png'
- target_name = 'outs/img.png'
-
- ocr = CnOcr()
- result = ocr.ocr(file_name)
-
- # 将ocr识别的内容、以及具体位置打包成字典
- txts = []
- for re in result:
- # print(re['position'][0])
- # print(type(re['position'][0]))
- txts.append([re['text'], [re['position'][2], re['position'][0]]])
-
- # 创建一个可以在给定图像上绘图的frame对象
- frame = cv2.imread(file_name)
- for tt in txts:
- # text是识别出来的文字
- text = tt[0]
-
- # site是他的矩形识别图形的起点、终点列表
- # 样式为[[起始点x轴坐标, 起始点y轴坐标], [终点x轴坐标, 终点y轴坐标]]
- site = tt[1]
- print(text, site)
-
- cv2.rectangle(frame, (site[0][0], site[0][1]), (site[1][0], site[1][1]), color=(0, 255, 0), thickness=3)
-
- # 请根据实际情况在原图上标字,这里是默认将字体标在了识别框下方100的位置,因此仅作参考
- # img = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
- # draw = ImageDraw.Draw(img)
- # draw.text((site[1][0], site[1][1] + 100), text, (0, 255, 0),
- # font=FONT_STYLE)
- # frame = cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)
-
- cv2.imwrite(target_name, frame)
这是生成的图片
这是识别到的内容
至此,一次简单的ocr便完成了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。