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)

代码解析:

  1. 导入库: 导入 cv2 库用于图像处理,导入 pytesseract 库用于文字识别。

  2. 设置 Tesseract 路径: 设置 Tesseract 的路径,确保代码能够找到 Tesseract.exe 文件。

  3. 加载图像: 使用 cv2.imread() 函数加载目标图像。

  4. 图像预处理:

    • 转换为灰度图像: 使用 cv2.cvtColor() 函数将彩色图像转换为灰度图像,便于后续处理。
    • 自适应阈值处理: 使用 cv2.adaptiveThreshold() 函数进行自适应阈值处理,自动识别图像的最佳阈值,以更好地分离文字区域。
    • 膨胀操作: 使用 cv2.dilate() 函数对图像进行膨胀操作,将文字区域变得更粗壮,便于识别。
  5. 文字识别: 使用 pytesseract.image_to_string() 函数识别图像中的文字,lang='chi_sim' 表示使用简体中文语言模型。

  6. 显示图像: 使用 cv2.imshow() 函数显示原始图像和处理后的图像,方便观察效果。

  7. 保存图像: 使用 cv2.imwrite() 函数将处理后的图像保存到指定路径。

代码优化:

  • 使用自适应阈值处理代替简单的二值化处理,能够更好地适应不同图像的亮度和对比度,提高识别精度。
  • 对图像进行膨胀操作,可以将文字区域变得更粗壮,便于识别。
  • 尝试使用不同的 Tesseract 语言模型,根据实际情况选择最合适的模型,提高识别精度。

结语:

本文提供了一个使用 Python 和 Tesseract 库进行图像文字识别的优化示例,通过图像预处理、自适应阈值处理、膨胀操作等步骤,可以实现更精准的文字识别。希望本文能帮助您更好地理解图像识别 OCR 技术,并应用到实际项目中。

Python 图像识别 OCR 代码优化:使用 Tesseract 和 OpenCV 实现更精准的文字识别

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

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