You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用OpenCV或Pillow优化小图像以提升Tesseract数据提取效果

图像优化适配Tesseract的方案

针对你提供的表格类图像,可通过以下针对性处理步骤提升Tesseract的文字识别精度:

1. 消除背景阴影干扰

这类图像存在明显的背景阴影,直接灰度化无法有效区分文字与背景,可通过背景减法消除阴影:

import cv2
import numpy as np

# 读取图像并转为灰度图
img = cv2.imread("目标图像路径.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 生成背景掩码(通过形态学膨胀获取大面积背景)
kernel = np.ones((25, 25), np.uint8)
background = cv2.morphologyEx(gray, cv2.MORPH_DILATE, kernel)
# 背景减法提取清晰前景文字
no_shadow = cv2.divide(gray, background, scale=255)

2. 去除表格线条干扰

表格的横竖线条会干扰Tesseract识别,可通过形态学开操作精准去除细线条:

# 创建水平、垂直结构元素
horizontal_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (40, 1))
vertical_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 40))

# 去除水平线条
temp = cv2.erode(no_shadow, horizontal_kernel, iterations=1)
no_horizontal = cv2.dilate(temp, horizontal_kernel, iterations=1)

# 去除垂直线条
temp = cv2.erode(no_horizontal, vertical_kernel, iterations=1)
no_lines = cv2.dilate(temp, vertical_kernel, iterations=1)

3. 自适应阈值二值化

使用自适应阈值替代固定阈值,更适配光照不均的图像:

# 自适应高斯阈值二值化,反转黑白让文字为白色
thresh = cv2.adaptiveThreshold(no_lines, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2)

4. 去除残留噪点(可选)

如果图像仍有细碎噪点,用中值滤波清理:

cleaned_img = cv2.medianBlur(thresh, 3)

5. Tesseract识别参数优化

除图像预处理外,给Tesseract指定适合表格的识别模式:

import pytesseract

# --psm 6:假设图像为单块统一格式文本;--psm 4:适合列对齐的表格文本
result = pytesseract.image_to_string(cleaned_img, config='--psm 6')
print(result)

内容的提问来源于stack exchange,提问作者ZKS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:50:31