Python使用pytesseract库进行文字识别
HDUZN

pytesseract是Python的一个OCR文本识别库。

以下几点概括了它的主要信息:

  • 基于Tesseract OCR引擎:pytesseract是Tesseract OCR引擎的Python接口,需要先安装Tesseract。
  • 支持多种语言:通过Tesseract训练好的语言数据,pytesseract支持英文、中文等多种语言的OCR识别。
  • 主要功能:主要提供 image_to_string等方法,将图像文件识别为文本内容。
  • 准确率:基于深度学习的Tesseract 4.0+,识别准确率可以达到96%以上。
  • 使用简单:只需要几行代码就可以实现OCR识别,非常易于上手。
  • 识别流程:加载图像-> 预处理(提高识别质量) -> OCR识别 -> 后处理文本
  • 适用场景:printed文本识别、 invoices识别、身份证/护照识别等。
  • 优势:开源、使用简单、支持多语言、支持训练自定义模型。
  • 劣势:对手写体识别效果较差,对图像质量要求较高。
  • 备选方案:EasyOCR、PaddleOCR等其他OCR库。

Github项目地址:https://github.com/tesseract-ocr/tesseract

使用步骤

要使用pytesseract,除了编写代码外,还需要进行以下几个步骤:

1. 安装Tesseract OCR引擎

pytesseract是一个Python的OCR库,它依赖于Tesseract OCR引擎。因此,首先需要安装Tesseract OCR引擎。

Github项目页上有下载地址:https://github.com/UB-Mannheim/tesseract/wiki

找到“Tesseract installer for Windows”项中 tesseract-ocr-w64-setup-5.3.1.20230401.exe (64 bit) 下载就行(如果32位的就打开 older versions for 32 and 64 bit Windows 的页面找对应包含w32的去下载)

注意:安装的时候有个语言数据的选择可以选一下自己需要的,我这就选择了chinese相关的4个。

安装完后,可以把安装目录下的 exe 文件添加到系统环境变量,默认是:C:\Program Files\Tesseract-OCR\tesseract.exe

添加了系统环境变量,就可以运行以下命令查看安装的语言有哪些(没添加的话就安装目录下运行也可以的):

1
2
3
4
5
6
7
8
9
tesseract --list-langs

# 结果如下:
chi_sim # 简体中文
chi_sim_vert
chi_tra
chi_tra_vert
eng
osd

2. 安装pytesseract库

在安装了Tesseract OCR引擎之后,可以使用pip命令安装pytesseract库。打开终端或命令提示符,运行以下命令:

1
pip install pytesseract

3.Python代码举例

使用pytesseract库的image_to_string函数可以将图像转换为文本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import cv2
import pytesseract

# 设置Tesseract的安装路径(可选)
# 如果Tesseract OCR引擎没有被自动识别,可以手动设置其安装路径。
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

# 读取图片
image = cv2.imread('IMG_2103.JPG')

# 进行图像预处理,包括灰度化、降噪等
# ...

# 使用Pytesseract识别图片
text = pytesseract.image_to_string(image, lang='chi_sim')
print(text)

以上是使用pytesseract的基本步骤。

很多时候直接对原图使用 pytesseract 识别效果不佳,需要先对图像进行预处理,提高识别准确率。常见的预处理有裁切、去噪、缩放、阈值化、膨胀腐蚀等。可以使用 OpenCV 等图像处理库。

比如:

1
2
3
4
5
6
7
8
9
10
11
# 读取图片
image = cv2.imread('IMG_2103.JPG')

# 进行图像预处理,包括灰度化、降噪等
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
gray = cv2.medianBlur(gray, 3)

# 使用Pytesseract识别图片
text = pytesseract.image_to_string(gray, lang='chi_sim')
print(text)
  • 本文标题:Python使用pytesseract库进行文字识别
  • 本文作者:HDUZN
  • 创建时间:2023-08-29 22:21:48
  • 本文链接:http://hduzn.cn/2023/08/29/Python使用pytesseract库进行文字识别/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论