You need to enable JavaScript to run this app. 如何使用Python中的Tesseract提取图片高亮区域的文本内容?
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python中的Tesseract提取图片高亮区域的文本内容?

使用Python + Tesseract 提取图片高亮区域文本的实现方案

前置准备

先安装依赖:

  • 首先安装Tesseract OCR引擎(Windows安装时记得勾选添加到系统环境变量,或后续在代码中手动指定路径)
  • 安装Python依赖包:
    pip install pytesseract pillow opencv-python

实现逻辑

  1. 用OpenCV读取图片,转换到HSV色彩空间,通过颜色阈值筛选出高亮(通常为黄色)区域的掩码
  2. 从原图中裁剪出高亮对应的ROI(感兴趣区域)
  3. 对ROI做图像预处理(灰度化、二值化、降噪)提升识别准确率
  4. 调用Tesseract识别预处理后的区域文本

完整代码示例

import cv2
import numpy as np
import pytesseract

# 【Windows用户如果没加环境变量需要取消下一行注释,替换为自己的Tesseract安装路径】
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

# 读取图片,路径替换为自己本地的图片路径
img = cv2.imread("test.jpg")
# 转HSV色彩空间方便筛选颜色
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 黄色高亮的HSV阈值范围,可根据实际高亮颜色调整
lower_yellow = np.array([20, 100, 100])
upper_yellow = np.array([30, 255, 255])

# 生成高亮区域掩码
mask = cv2.inRange(hsv, lower_yellow, upper_yellow)
# 查找高亮区域的轮廓
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 遍历每个高亮区域识别文本
for cnt in contours:
    # 过滤过小的噪点区域
    if cv2.contourArea(cnt) < 10:
        continue
    # 获取区域坐标
    x, y, w, h = cv2.boundingRect(cnt)
    # 裁剪高亮区域
    roi = img[y:y+h, x:x+w]
    
    # ROI预处理提升识别率
    gray_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)
    _, binary_roi = cv2.threshold(gray_roi, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
    
    # 识别文本,如果是中文替换lang参数为lang='chi_sim'(需提前安装Tesseract中文语言包)
    text = pytesseract.image_to_string(binary_roi, lang='eng', config='--psm 6')
    print(f"识别到高亮区域文本:{text.strip()}")

优化提示

  • 如果高亮不是黄色,可调整lower_yellow和upper_yellow的HSV阈值适配对应颜色
  • 识别准确率低时可调整Tesseract的--psm参数,比如--psm 7表示将图像视为单行文本,--psm 8视为单个单词
  • 识别中文需在安装Tesseract时勾选中文语言包,调用时指定lang='chi_sim'

内容的提问来源于stack exchange,提问作者Bro From Space

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 23:45:06