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

news/2024/7/5 3:23:14
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达推荐阅读
42个pycharm使用技巧,瞬间从黑铁变王者Google C++项目编程风格指南 (中文版) 分享

转自|opencv学堂

01

软件版本

- Python3.6.5
- OpenCV-Python 4.x
- Tesseract-OCR 5.0.0-alpha.20201127
- Win10 64

02

安装与配置

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

安装opencv-python开发包

pip install opencv-python

安装Tesseract-OCR Python SDK支持

pip install pytesseract

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

C:\Program Files\Tesseract-OCR

03

验证与测试

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

import pytesseract as tess
print(tess.get_tesseract_version())
print(tess.get_languages())

运行结果如下:

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

Tesseract-OCR介绍

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

检测与识别文本函数:

检测:

def image_to_boxes(image,lang=None,config='',nice=0,output_type=Output.STRING,timeout=0,
)

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

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

识别

def image_to_string(image,lang=None,config='',nice=0,output_type=Output.STRING,timeout=0,
)

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

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

英文与数字识别

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

Python代码如下:

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目录下:

C:\Program Files\Tesseract-OCR\tessdata

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

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

以下图为例:

识别代码

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()

运行结果

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

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

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目31讲

在「小白学视觉」公众号后台回复:Python视觉实战项目31讲即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

下载4:leetcode算法开源书

在「小白学视觉」公众号后台回复:leetcode即可下载。每题都 runtime beats 100% 的开源好书,你值得拥有!


交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


http://lihuaxi.xjx100.cn/news/281777.html

相关文章

html设备监控系统模板,蓝色的远程监控设备系统后台管理界面模板

资源下载此资源下载价格为4D币,请先登录资源文件列表codedown123-0729-35/actions.html , 5281codedown123-0729-35/add.html , 7608codedown123-0729-35/apikey_manage.html , 4719codedown123-0729-35/batch.html , 7400codedown123-0729-35/change_password.html…

canvas-绘制矩形-读书笔记

使用<canvas>元素&#xff0c;必须先设置其width和height属性&#xff0c;指定可以绘图的区域大小。 要在画布上绘图&#xff0c;需要取得绘图上下文&#xff0c;也就是要调用getContext()方法并传入上下文的名字。在使用<canvas>元素前&#xff0c;首先要检测下ge…

抽象工厂与工厂模式例子

NativeFactory。java package com;//定义 人有杀日本人 和 杀美国人两个方法interface NativePerson{ public void killAmeria(); public void killJapan();}//中国人实现了人的接口 class NativeChinese implements NativePerson{ //中国人杀美国人 public void killAmeria() …

腾讯拥抱开源:首次公布开源路线图,技术研发向共享、复用和开源迈进

整理 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导读&#xff1a;去年&#xff0c;知乎上一篇讨论腾讯技术的帖子异常火爆&#xff0c;讨论的主题是当下&#xff08;2018 年&#xff09;腾讯的技术建设是否处于落后同体量公司的状态&#xff0c;这篇帖子得…

一键生成人脸像素图,还能上传到动森!这个项目很好玩

机器之心报道参与&#xff1a;魔王、Jamin日本独立开发者 Sato 曾因阿斯伯格综合征辍学离职&#xff0c;后来自学 AI 开发 AI Gahaku 项目&#xff08;AI 大师级画家&#xff09;&#xff0c;在日美引起轰动&#xff0c;10 天覆盖百万用户。此外&#xff0c;她还做了另一个有趣…

使用Python+OpenCV+dlib为人脸生成口罩

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达推荐阅读 42个pycharm使用技巧&#xff0c;瞬间从黑铁变王者Google C项目编程风格指南 (中文版) 分享转自|深度学习与计算机视觉本文使用OpenCV dlib库生成口罩口罩已经被…

企业的云服务选择:SaaS、PaaS、IaaS的对比分析

如今&#xff0c;云服务更为重要。几乎每个企业都需要使用云计算服务。管理大量敏感和机密数据变得困难。因此&#xff0c;在任何类型的企业中使用云服务都是不可避免的。 首先以相对简单的方式进行对比。 如今&#xff0c;云服务更为重要。几乎每个企业都需要使用云计算服务。…

html 常用方法,jquery的常用方法有哪些?

jquery的常用方法有哪些&#xff1f;下面本篇文章给大家介绍一下jQuery中的几种常用方法。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对大家有所帮助。jQuery的几个常用方法.bind().unbind().css().hasclass().removeclass.parent().children().ht…