首页 > 其他分享 >paddleocr识别表格文字内容,对表格内容进行从左上到右下排序

paddleocr识别表格文字内容,对表格内容进行从左上到右下排序

时间:2024-07-01 16:13:33浏览次数:13  
标签:识别 表格 paddleocr item sorted 左上 排序

背景:

使用paddleocr识别表格图片文字内容,但是由于图片拍摄或扫描角度问题,不一定是水平平衡的,可能存在一定的倾斜角度。

所以如果是仅按坐标从左上到右下进行排序的话,可能本来同一行的文字,被切分成了上下行。

因此需要使用阈值来进行近似判断。下面就是一个可用例子。

def sort_top_left_to_bottom_right(coord_list):
    """
    对识别结果进行预处理,通过阈值进行‘行’划分,实现按区域坐标进行从左上到右下进行排序。
    :param coord_list:[ [[[x1,y1],[x2,y2],[x3,y3],[x4,y4]],(识别结果1)],[[区域2坐标组,(识别结果2)],... ]
    """
    # 定义一个阈值,用于判断两个y坐标是否足够接近以被视为同一行
    y_threshold = 20 # 可以根据实际情况调整

    # 对坐标列表进行初步排序,首先按y1排序,然后按x1排序
    pre_sorted = sorted(coord_list, key=lambda item: (item[0][0][1], item[0][0][0]))
    
    # 对预排序的列表进行分组和最终排序
    final_sorted = []
    current_group = []
    last_y = None

    for item in pre_sorted:
        current_y = item[0][0][1]
        
        if last_y is None or abs(current_y - last_y) <= y_threshold:
            # 如果y坐标足够接近,添加到当前组
            current_group.append(item)
        else:
            # 如果y坐标相差较大,对当前组按x1排序并添加到最终列表
            final_sorted.extend(sorted(current_group, key=lambda x: x[0][0][0]))
            current_group = [item]
        
        last_y = current_y

    # 处理最后一组
    if current_group:
        final_sorted.extend(sorted(current_group, key=lambda x: x[0][0][0]))

    return final_sorted

 

标签:识别,表格,paddleocr,item,sorted,左上,排序
From: https://www.cnblogs.com/donlyn/p/18278261

相关文章

  • 有关paddleocr在pyinstall中打包问题的解决方案
    借鉴网址python解决paddleocr打包问题_pyinstaller怎么解决paddleocr中的动态导入-CSDN博客在打包时我使用的spec文件如下:(需要将pathe和binaries换为自己的paddleocr路径)block_cipher=Nonea=Analysis(['main.py'],   pathex=['E:\\PyEnviroment\\Lib\\site-packages\\p......
  • AI数据分析011:Excel表格智能判断数据起点来计算增长率
    文章目录一、介绍二、输入内容三、输出内容一、介绍计算Excel表格中2023年1月到2024年4月的总增长率和复合增长率。如果数据都有的情况下,公式很简单:总增长率=(O2-B2)/B2复合增长率=POWER((O2/B2),1/13)-1但是,2023年1月、2月、3月的数据,有些有,有些没有,是0......
  • 7.表格属性
    下面代码演示案例<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</titl......
  • 【笔记】表格处理(一)Apache POI
    表格处理ApachePOI表格处理一、简介HSSF和XSSF有啥不同?二、使用步骤(一)依赖(二)基础使用示例1.创建一个简单的Excel文件2.读取一个Excel文件3.设置单元格样式4.合并单元格5.添加图片6.数据有效性和下拉列表7.自动调整列宽8.公式计算9.日期和时间格式10.......
  • 前端页面实现【矩阵表格与列表】
    实现页面: 1.动态表绘制(可用于矩阵构建)<template><div><h4><b>基于层次分析法的权重计算</b></h4><tabletable-layout="fixed"><thead><tr><thv-for="(_,colIndex)in(numRows......
  • HTML表格宽度
    HTML表格宽度参考:htmltablewidthHTML表格是网页设计中常用的元素之一,可以用来展示数据、创建布局等。表格的宽度是一个重要的参数,可以通过不同的方式来设置表格的宽度,本文将详细介绍HTML表格宽度的不同设置方式和示例代码。1.设置表格宽度为固定值可以通过width属性来设置......
  • excel电子表格双表多列修改,点击式。
        excel的xlookup确实非常简单,有部分功能也非常快。但是有的人不会公式,或者不喜欢用公式,或者没有excel2021以上的版本。而且xlookup确实也有些还不是很完美的地方,比如对多列关联查询很慢。所以我们还是有必要增加类似的办法,hpctb提供了“双表多列修改”,我们来看一看。......
  • 多维表格场景及实现公式(持续更新)
    1.获取目录中最后一级目录场景:获取目录中最后一级目录(CTC公共技术知识库/架构/开发规范/电信软件研发规范)实现公式:LAST(SPLIT([目录],"/")解析:SPLIT按照/拆分字符串,结果:CTC公共技术知识库,架构,开发规范,电信软件研发规范LAST获取列表最后一个,结果:电信软件研发规范......
  • element的table获取当前表格行
    需求:验证表格同一行的最低限价不能超过销售定价思路:先获取当前行table的index,然后在做大小比较1.局部html<el-table-columnlabel="销售定价(元)"min-width="200px"><templateslot="header"><spanclass="star">*</span><spanclas......
  • HTML表格使用全指南,真的很详细
    HTML表格基础与语义化:构建结构化数据展示HTML表格是展示结构化数据的强大工具。通过合理的语义化标签使用,开发者可以创建出既美观又易于理解的表格。本文将介绍HTML表格的基本结构和语法,以及如何使用<caption>、<thead>、<tbody>、<tfoot>和<th>标签进行表格的语义化。HTML表......