paddleocr识别并按行输出结果

from paddleocr import PaddleOCR

# 初始化OCR引擎
ocr = PaddleOCR(use_angle_cls=True, lang="ch")  # 使用中文模型

# 对图像进行OCR识别
img_path = './imgs/img_3.png'
result = ocr.ocr(img_path, cls=True)

# 按y坐标对文本块进行排序
sorted_result = sorted(result, key=lambda x: x[0][1])  # 假设每个元素是(bbox, text)的元组

# 初始化行列表
rows = []
current_row = []
last_y = None
y_threshold = 10  # 行的y坐标差异阈值

for line in sorted_result:
    for node in line:
        bbox, text = node
        y1, y2 = bbox[1][1], bbox[3][1]
        if last_y is None or y1 - last_y > y_threshold:
            # 如果这是第一行或与前一行有足够的垂直距离,则开始新行
            if current_row:
                rows.append(current_row)
            current_row = [(bbox, text)]
            last_y = y1
        else:
            # 否则,将文本块添加到当前行
            current_row.append((bbox, text))

# 不要忘记添加最后一行(如果有的话)
if current_row:
    rows.append(current_row)

# 输出结果
for idx, row in enumerate(rows, start=1):
    print(f"Row {idx-1}:")
    for bbox, text in row:
        print(f"  Text: {text}, Box: {bbox}")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值