Python 使用 Tesseract OCR 识别图像文字 - 提高识别精度
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 是进行开运算的操作,可以去除图像中的噪声和粘连部分,从而提高识别精度
代码解释
- 读取图像: 使用
cv2.imread()读取图像文件。 - 转换为灰度图像: 使用
cv2.cvtColor()将彩色图像转换为灰度图像。 - 二值化处理: 使用
cv2.threshold()对图像进行二值化处理,将图像转换为黑白两色。 - 腐蚀操作: 使用
cv2.erode()对图像进行腐蚀操作,去除图像中的噪声。 - 开运算: 使用
cv2.morphologyEx()对图像进行开运算,去除图像中的噪声和粘连部分。 - 识别图像中的文字: 使用
pytesseract.image_to_string()识别图像中的文字。 - 显示图像: 使用
cv2.imshow()显示处理后的图像。
总结
通过使用图像预处理技术,如灰度化、二值化、腐蚀、开运算等,可以有效提高 Tesseract OCR 的识别精度。选择合适的预处理方法和 Tesseract OCR 参数,可以获得更准确的文字识别结果。
原文地址: https://www.cveoy.top/t/topic/mwTy 著作权归作者所有。请勿转载和采集!