Python 使用 Tesseract OCR 识别图像文字 - 提高识别精度

本文将介绍如何使用 Python 和 Tesseract OCR 库识别图像中的文字,并通过图像预处理技术,如灰度化、二值化、腐蚀、开运算等,提高识别精度。

安装库

首先需要安装 Tesseract OCR 和 OpenCV 库。

pip install pytesseract opencv-python

代码示例

import cv2
import pytesseract

# 安装tesseract-OCR,并配置路径
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

# 读取图像
img = cv2.imread('C:/Users/jian.gao/Desktop/1.jpg')

# 转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 二值化处理
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]

# 腐蚀操作,去除噪声
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
erode = cv2.erode(thresh, kernel, iterations=1)

# 进行开运算,去除噪声和粘连部分
opening_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
opening = cv2.morphologyEx(erode, cv2.MORPH_OPEN, opening_kernel)

# 识别图像中的文字
text = pytesseract.image_to_string(opening, lang='chi_sim', config='--psm 6')

print(text)

# 显示图像
cv2.imshow('image', img)
cv2.imshow('gray', gray)
cv2.imshow('thresh', thresh)
cv2.imshow('erode', erode)
cv2.imshow('opening', opening)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 配置说明:
# --psm 6 表示识别单个文本行,可提高识别精度
# lang='chi_sim' 表示使用中文简体语言模型进行识别
# opening_kernel 和 opening 是进行开运算的操作,可以去除图像中的噪声和粘连部分,从而提高识别精度

代码解释

  1. 读取图像: 使用 cv2.imread() 读取图像文件。
  2. 转换为灰度图像: 使用 cv2.cvtColor() 将彩色图像转换为灰度图像。
  3. 二值化处理: 使用 cv2.threshold() 对图像进行二值化处理,将图像转换为黑白两色。
  4. 腐蚀操作: 使用 cv2.erode() 对图像进行腐蚀操作,去除图像中的噪声。
  5. 开运算: 使用 cv2.morphologyEx() 对图像进行开运算,去除图像中的噪声和粘连部分。
  6. 识别图像中的文字: 使用 pytesseract.image_to_string() 识别图像中的文字。
  7. 显示图像: 使用 cv2.imshow() 显示处理后的图像。

总结

通过使用图像预处理技术,如灰度化、二值化、腐蚀、开运算等,可以有效提高 Tesseract OCR 的识别精度。选择合适的预处理方法和 Tesseract OCR 参数,可以获得更准确的文字识别结果。

Python 使用 Tesseract OCR 识别图像文字 - 提高识别精度

原文地址: https://www.cveoy.top/t/topic/mwTy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录