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

求助:如何用Python结合Robot Framework高亮图片中指定文本

解决方案:高亮图片中特定文本并结合Robot Framework使用

问题分析

当前Python脚本会高亮图片中所有文本,需求改为仅高亮指定字符串(如HS. CODE: 9408. 50),同时要和Robot Framework集成使用。

修改后的Python脚本

核心思路是用pytesseract.image_to_data()获取文本块的完整内容与位置信息,匹配目标字符串后再绘制高亮框,而非逐个字符处理:

import cv2
import numpy as np
import pytesseract

def highlight_specific_text(image_path, target_text, output_path=None):
    # 加载图片并转灰度
    img = cv2.imread(image_path)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    # 阈值处理增强文本对比度
    thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
    
    # 获取文本块的详细数据(内容、坐标等)
    data = pytesseract.image_to_data(thresh, output_type=pytesseract.Output.DICT)
    num_boxes = len(data['text'])
    
    alpha = 0.3  # 高亮透明度
    overlay = img.copy()
    
    for i in range(num_boxes):
        # 过滤空文本块,匹配目标字符串(支持部分匹配,如需完全匹配改用==)
        if int(data['conf'][i]) > 0 and target_text in data['text'][i].strip():
            x, y, w, h = data['left'][i], data['top'][i], data['width'][i], data['height'][i]
            # 绘制半透明黄色高亮框
            cv2.rectangle(overlay, (x, y), (x + w, y + h), (0, 255, 255), -1)
    
    # 合并高亮层与原图
    img = cv2.addWeighted(overlay, alpha, img, 1 - alpha, 0)
    
    # 保存或显示结果
    if output_path:
        cv2.imwrite(output_path, img)
    else:
        cv2.imshow("Highlighted Specific Text", img)
        cv2.waitKey(0)
        cv2.destroyAllWindows()

# 测试用例
if __name__ == "__main__":
    highlight_specific_text(
        "C:/Users/rmyeow/Desktop/Example pic/sample.png",
        "HS. CODE: 9408. 50",
        "C:/Users/rmyeow/Desktop/Example pic/highlighted_sample.png"
    )

和Robot Framework集成步骤

  1. 将上述Python脚本保存为image_text_highlight.py,放在Robot Framework项目的资源目录下。
  2. 在Robot Framework测试套件中导入该脚本,定义关键字:
*** Settings ***
Library    image_text_highlight.py

*** Test Cases ***
Highlight Target Text In Image
    Highlight Specific Text In Image    ${IMAGE_PATH}    ${TARGET_TEXT}    ${OUTPUT_PATH}
  1. 运行测试时,传入对应图片路径、目标字符串和输出路径参数即可。

注意事项

  • 确保已安装pytesseract、opencv-python依赖,同时配置好Tesseract OCR的环境变量。
  • 若需精确匹配目标字符串,将代码中的target_text in data['text'][i].strip()改为data['text'][i].strip() == target_text。
  • 可根据需求调整高亮框的颜色(如(0,255,255)是黄色)和透明度alpha值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:47:02