使用 Python OpenCV 和 Tesseract OCR 识别图片文字

本教程将介绍如何使用 Python 的 OpenCV 和 Tesseract OCR 库识别图片中的文字,并提取文字内容。

1. 安装必要的库

首先,需要安装 OpenCV 和 Tesseract OCR 库。可以使用 pip 命令安装:

pip install opencv-python pytesseract

2. 安装 Tesseract OCR 并配置路径

下载并安装 Tesseract OCR,并配置路径。在代码中需要设置 pytesseract.pytesseract.tesseract_cmd 变量指向 Tesseract OCR 可执行文件路径。

import cv2
import pytesseract

# 安装tesseract-OCR,并配置路径
pytesseract.pytesseract.tesseract_cmd = r'D:\tesseract-ocr\tesseract.exe'

3. 读取图片并进行预处理

读取图片,并进行预处理,例如转换为灰度图像,二值化处理,腐蚀和开运算,以去除噪声和提升识别效果。

# 读取图像
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)

4. 识别图片文字

使用 pytesseract.image_to_string() 函数识别图片文字,并输出识别结果。

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

print(text)

5. 完善代码,使其检索文件夹下的所有图片

可以使用 os.listdir() 函数遍历文件夹,并识别所有图片的文字。

import os
import cv2
import pytesseract

# 安装tesseract-OCR,并配置路径
pytesseract.pytesseract.tesseract_cmd = r'D:\tesseract-ocr\tesseract.exe'

# 待检索的文件夹路径
folder_path = 'C:/Users/jian.gao/Desktop/'

# 遍历文件夹中的所有文件
for file_name in os.listdir(folder_path):
    # 判断文件是否为图像文件
    if file_name.endswith('.jpg') or file_name.endswith('.png') or file_name.endswith('.jpeg'):
        # 读取图像
        img = cv2.imread(os.path.join(folder_path, file_name))

        # 转换为灰度图像
        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(f'文件名:{file_name},识别结果:{text}')

注意:

  • 确保已安装 Tesseract OCR 并配置好路径。
  • lang 参数指定识别语言,可以使用 chi_sim 识别简体中文。
  • config 参数可以设置识别模式,--psm 6 表示单行文字识别模式。
  • 可以根据实际情况调整预处理参数,例如腐蚀和开运算的内核大小和迭代次数。
  • 以上代码示例仅供参考,您可以根据实际需求进行修改。
Python OpenCV 和 Tesseract OCR 识别图片文字并提取

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

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