前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenCV Python + Tesseract-OCR轻松实现中文识别

OpenCV Python + Tesseract-OCR轻松实现中文识别

作者头像
小白学视觉
发布2021-01-06 14:39:37
10.1K0
发布2021-01-06 14:39:37
举报
文章被收录于专栏:深度学习和计算机视觉
代码语言:javascript
复制
转自|opencv学堂

01

软件版本

代码语言:javascript
复制
- Python3.6.5
- OpenCV-Python 4.x
- Tesseract-OCR 5.0.0-alpha.20201127
- Win10 64

02

安装与配置

安装Python SDK选择默认安装,同时勾选最下面得红色矩形框内容。

安装opencv-python开发包

代码语言:javascript
复制
pip install opencv-python

安装Tesseract-OCR Python SDK支持

代码语言:javascript
复制
pip install pytesseract

下载Tesseract-OCR 5.0.0-alpha.20201127安装包并安装!然后在环境变量中添加

代码语言:javascript
复制
C:\Program Files\Tesseract-OCR

03

验证与测试

安装与配置好OpenCV-Python与Tesseract-OCR之后,需要进一步通过代码验证正确性。打开Pycharm IDE,新建一个python项目与python文件,输入以下代码

代码语言:javascript
复制
import pytesseract as tess
print(tess.get_tesseract_version())
print(tess.get_languages())

运行结果如下:

第一行是版本信息,第二行是支持的语言信息,默认只支持英文。

Tesseract-OCR介绍

开源的OCR识别引擎,高版本识别基于LSTM,其整个处理流程如下:

检测与识别文本函数:

检测:

代码语言:javascript
复制
def image_to_boxes(
    image,
    lang=None,
    config='',
    nice=0,
    output_type=Output.STRING,
    timeout=0,
)

返回所有识别文字的Box框坐标,每一行为一个BOX信息输出

每行的前五个值分别是,识别的字符、BOX框的左上角与右下角坐标

识别

代码语言:javascript
复制
def image_to_string(
    image,
    lang=None,
    config='',
    nice=0,
    output_type=Output.STRING,
    timeout=0,
)

输入的图像通道顺序是RGB,OpenCV默认为BGR,返回的是识别结果

必输入的参数是image,其它可选

英文与数字识别

Tesseract-OCR默认支持英文与数字识别,有输入图像如下:

Python代码如下:

代码语言:javascript
复制
image = cv.imread("D:/cv4j.png")
image_rgb = cv.cvtColor(image, cv.COLOR_BGR2RGB)
text = tess.image_to_string(image_rgb, lang="eng")
content = text.replace("\f", "").split("\n")
for c in content:
    if len(c) > 0:
        print(c)
h, w, c = image.shape
boxes = tess.image_to_boxes(image)
for b in boxes.splitlines():
    b = b.split(' ')
    image = cv.rectangle(image, (int(b[1]), h - int(b[2])), (int(b[3]), h - int(b[4])), (0, 255, 0), 2)

cv.imshow('text detect', image)
cv.waitKey(0)
cv.destroyAllWindows()

运行结果如下:

英文识别对无干扰的背景效果非常好!

中文识别

默认情况下Tesseract-OCR不支持中文识别,需要下载中文识别的模型文件,然后放置到安装路径的tessdata目录下:

代码语言:javascript
复制
C:\Program Files\Tesseract-OCR\tessdata

然后在运行语言检查支持代码,运行结果如下:

其中chi_sim表示中文简体支持,eng表示英文支持!

以下图为例:

识别代码

代码语言:javascript
复制
image = cv.imread("D:/yanxishe.png")
image_rgb = cv.cvtColor(image, cv.COLOR_BGR2RGB)
text = tess.image_to_string(image_rgb, lang="chi_sim")
print(text)
h, w, c = image.shape
boxes = tess.image_to_boxes(image)
for b in boxes.splitlines():
    b = b.split(' ')
    image = cv.rectangle(image, (int(b[1]), h - int(b[2])), (int(b[3]), h - int(b[4])), (0, 255, 0), 2)

cv.imshow('text detect', image)
cv.waitKey(0)
cv.destroyAllWindows()

运行结果

正确率还不错,需要进一步处理一下,直接放大两倍,然后再测试一波

发现错误识别大大减少,基本可用!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白学视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文字识别
文字识别(Optical Character Recognition,OCR)基于腾讯优图实验室的深度学习技术,将图片上的文字内容,智能识别成为可编辑的文本。OCR 支持身份证、名片等卡证类和票据类的印刷体识别,也支持运单等手写体识别,支持提供定制化服务,可以有效地代替人工录入信息。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档