paddleocr识别并按行输出结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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}")

  

posted @   CHHC  阅读(345)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-07-19 分布式架构3:MySQL集群(Mysql Cluster7.5.5)
2021-07-19 分布式架构1:Nginx实现负载均衡
点击右上角即可分享
微信分享提示