Python OpenCV 和 Tesseract OCR 识别图片文字并提取
使用 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表示单行文字识别模式。- 可以根据实际情况调整预处理参数,例如腐蚀和开运算的内核大小和迭代次数。
- 以上代码示例仅供参考,您可以根据实际需求进行修改。
原文地址: https://www.cveoy.top/t/topic/mw0c 著作权归作者所有。请勿转载和采集!