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

如何使用pytesseract获取图像中每行文本的边界框?

解决方法

直接利用pytesseract的image_to_data函数可以直接获取行级文本和对应的边界框,无需手动从字符框拼接。以下是实现代码:

import cv2
import pytesseract

def image_to_line_boxes(img):
    # 获取包含层级信息的结构化数据
    data = pytesseract.image_to_data(img, output_type=pytesseract.Output.DICT)
    line_boxes = []
    total_entries = len(data['level'])

    for i in range(total_entries):
        # 筛选行级条目(level=2),同时跳过空文本行
        if data['level'][i] == 2 and data['text'][i].strip():
            line_text = data['text'][i].strip()
            # 计算边界框的四个坐标
            x1 = data['left'][i]
            y1 = data['top'][i]
            x2 = x1 + data['width'][i]
            y2 = y1 + data['height'][i]
            confidence = data['conf'][i]
            # 按要求格式拼接边界框字符串
            box_str = f"{x1} {y1} {x2} {y2} {confidence}"
            line_boxes.append((line_text, box_str))
    
    return line_boxes

# 调用示例
img = cv2.imread("你的图片路径.jpg")
boxes = image_to_line_boxes(img)

说明

  • image_to_data返回的字典包含多维度信息:level字段区分层级(1=页面、2=行、3=词、4=字符),我们直接取level=2的行级数据即可。
  • 行文本会自动包含空格,无需手动拼接单个字符。
  • 边界框坐标计算逻辑和image_to_boxes保持一致,符合你需要的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:18:17