🖨︎一键多场景识别图片中的文字

584 阅读3分钟

前言

有个需求,识别图片中的文字,跟微信的识别文字功能差不多。

市面上有一些这种服务的云,比如华为云的(云图片文字识别软件),证件啊、票据啊、照片图片啊等等的识别。这里就不一一举例了。这些云服务提供的识别文字的OCR功能呢,绝大多数都是要我们去注册登录,拿到一些key,按照给定的参数格式请求他们的接口的。这一篇文呢,先不讲各种云服务的ocr识别图片文字功能。

我们先来看看ORC这三个英文字母分别代表什么英文单词,ORC 取自于(Optical光学 Character字符 Recognition识别)的首字母。起名图像的文字识别,叫做“光学文字识别”。

PaddleOCR

一款深度学习的orc识别库,语言是python,中文识别精度很不错,找到的一些其他的库,要不就是只是对英语识别度比较好,要么识别中文就会比较差。这个paddle ocr对中文的识别很精准。

安装

环境:需要python3.7

1、

pip install paddlepaddle

2、

pip install paddleocr

通过命令 pip list 看安装的版本

image.png

命令行

洗发水说明

命令行如何使用。找一张图放在本地文件夹中,

image.png

先cd 去到这个文件夹

再进行下面命令行

paddleocr --image_dir ./pic.jpg --use_angle_cls true --lang ch --use_gpu false

--lang cn 是指中文

其中这里参数有['ch', 'en', 'korean', 'japan', 'chinese_cht', 'ta', 'te', 'ka', 'latin', 'arabic', 'cyrillic', 'devanagari']这些值,其中ch代表中文,en代表英文

输出的是:

image.png

[[[28.0, 37.0], [302.0, 39.0], [302.0, 72.0], [27.0, 70.0]], ('纯臻营养护发素', 0.9658748507499695)]

其中这个数组中,前面第一个值是指定位的文本方框四个坐标点,[左上,右上,右下,左下],括号里代表的是(‘值’, ‘精确度’)。

其中 -- use_gpu, 就是指是否使用GPU进行图像识别。

彩色艺术字体

image.png

这种艺术字体啊各种字体,我都是试过了,识别都是没问题的。

image.png

代码

识别图片中的文本

新建一个index.py文件

from paddleocr import PaddleOCR
ocr = PaddleOCR(use_angle_cls=True, lang="ch")
result = ocr.ocr('./1.png', cls=True)
for line in result:
    print('结果', line)

python index.py 运行跑起来,得到的结果如下:

image.png

识别pdf中的文本

有的小伙伴就说了,如果我想输出PDF的全部文字,到时候可以借鉴一下运用一些到写作中,不用复制粘贴什么的。可以。

image.png

这里直接运行呢会报一个错“# AttributeError: 'Document' object has no attribute 'pageCount'. Did you mean: 'page_count'?”

这个问题呢,是因为PyMuPDF版本太高了,超过1.19.0这个版本的PyMuPDF中的pageCount换成了page_count,所以才导致这个错误。

安装小于1.19.0的版本即可

pip install PyMuPDF==1.19.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

我这里呢是全篇拿,这个pdf总共16页,不会很慢,可能我这个pdf中文本也不算密密麻麻的那种。

image.png

也可以指定page_num

ocr = PaddleOCR(use_angle_cls=True, lang="ch", page_num=1)

总结

大量快速精准识别文字,有很大的用处,比如用来做分析、词云、甚至垂直应用模型训练,这个工具都会助你一臂之力。

🔴 Do things as early as possible.