Python 图像识别 OCR 代码优化:使用 Tesseract 和 OpenCV 实现更精准的文字识别
Python 图像识别 OCR 代码优化:使用 Tesseract 和 OpenCV 实现更精准的文字识别
本文将介绍如何使用 Python 语言,结合 OpenCV 和 Tesseract 库,实现更精准的图像文字识别功能。代码示例涵盖图像预处理、自适应阈值处理、膨胀操作、文字识别等步骤,并附带保存处理后图像的代码。
代码示例:
import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'D:\tesseract-ocr\tesseract.exe'
img = cv2.imread('C:/Users/jian.gao/Desktop/1.jpg')
# 将彩色图像转换为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 对图像进行自适应阈值处理
thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 11, 2)
# 对图像进行膨胀操作
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
dilate = cv2.dilate(thresh, kernel, iterations=1)
# 识别图像中的文字
text = pytesseract.image_to_string(dilate, lang='chi_sim')
print(text)
# 显示图像
cv2.imshow('image', img)
cv2.imshow('dilate', dilate)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 保存处理后的图像
cv2.imwrite('C:/Users/jian.gao/Desktop/1_processed.jpg', dilate)
代码解析:
-
导入库: 导入
cv2库用于图像处理,导入pytesseract库用于文字识别。 -
设置 Tesseract 路径: 设置 Tesseract 的路径,确保代码能够找到 Tesseract.exe 文件。
-
加载图像: 使用
cv2.imread()函数加载目标图像。 -
图像预处理:
- 转换为灰度图像: 使用
cv2.cvtColor()函数将彩色图像转换为灰度图像,便于后续处理。 - 自适应阈值处理: 使用
cv2.adaptiveThreshold()函数进行自适应阈值处理,自动识别图像的最佳阈值,以更好地分离文字区域。 - 膨胀操作: 使用
cv2.dilate()函数对图像进行膨胀操作,将文字区域变得更粗壮,便于识别。
- 转换为灰度图像: 使用
-
文字识别: 使用
pytesseract.image_to_string()函数识别图像中的文字,lang='chi_sim'表示使用简体中文语言模型。 -
显示图像: 使用
cv2.imshow()函数显示原始图像和处理后的图像,方便观察效果。 -
保存图像: 使用
cv2.imwrite()函数将处理后的图像保存到指定路径。
代码优化:
- 使用自适应阈值处理代替简单的二值化处理,能够更好地适应不同图像的亮度和对比度,提高识别精度。
- 对图像进行膨胀操作,可以将文字区域变得更粗壮,便于识别。
- 尝试使用不同的 Tesseract 语言模型,根据实际情况选择最合适的模型,提高识别精度。
结语:
本文提供了一个使用 Python 和 Tesseract 库进行图像文字识别的优化示例,通过图像预处理、自适应阈值处理、膨胀操作等步骤,可以实现更精准的文字识别。希望本文能帮助您更好地理解图像识别 OCR 技术,并应用到实际项目中。
原文地址: https://www.cveoy.top/t/topic/mwSt 著作权归作者所有。请勿转载和采集!