首页 > 其他分享 >智能图片识别表格

智能图片识别表格

时间:2024-07-21 08:59:06浏览次数:16  
标签:PP 表格 智能 dict table 识别 Structure

文章目录

在线体验

智能图片识别表格
image.png

快速开始

  1. 创建anaconda环境
conda create -n XXX python=3.10
  1. 安装依赖包
pip install -r requirements.txt
  1. 启动app.py,访问网页 127.0.0.1:7860
python app.py
  1. 网页界面如下,可在示例图片中快速进行试验

image.png

一、项目介绍篇

在数字化办公的浪潮中,将图片中的数据转换成可编辑的Excel格式已成为一项日益增长的需求。PP-Structure,由飞桨PaddleOCR团队开发,提供了强大的文档分析能力,包括版面分析和表格识别,使得图片数据结构化输出成为可能。本文将深入探讨PP-Structure技术,分析其工作原理、实现过程,并探讨其在数字化办公中的应用价值。

1.1 PP-Structure概述

官方 github 地址:https://github.com/PaddlePaddle/PaddleOCR

PP-Structure是一款基于AI的图片到Excel转换工具,以其快速和高准确率的转换能力在技术社区中受到广泛关注。这一工具的内部逻辑和智能转化技术,为文档格式转换提供了一种全新的解决方案。

1.2 PP-Structure核心功能:表格识别

PP-Structure的核心功能是表格识别,它通过调用PP-Structure的PPStructure类实现表格识别功能,并将识别结果保存到临时文件中。此外,还实现了图片方向分类功能,用于判断图片是否需要旋转以适应版面分析。

1.3 PP-Structure特点

  • 本地部署:支持本地部署,方便企业内部使用。
  • 多模型支持:提供了多种模型以适应不同的识别需求,如PP-Structure和PP-StructureV2。
  • 高准确率:基于SLANet在PubTabNet数据集上训练的模型,保证了识别的高准确率。

1.4 模块介绍

image.png

1.4.1 TableDec.py

  • 整合了pp-structure的核心实现类

1.4.2 app.py

  • gradio页面代码

二、核心代码介绍篇

2.1 app.py

path = os.path.join("./pp_models")

tdModel = TableDec(det_model_dir=os.path.join(path, "det"),
                   rec_model_dir=os.path.join(path, "rec"),
                   cls_model_dir=os.path.join(path, "cls"),
                   table_model_dir=os.path.join(path, "table"),
                   layout_model_dir=os.path.join(path, "layout"))


def dec_fn(image):
    global tempdir
    im_show, excel_file, execl_str = tdModel.run_dec(tempdir, image)
    return im_show, excel_file, execl_str


if __name__ == "__main__":
    # 使用临时文件夹保存数据
    global tempdir
    with tempfile.TemporaryDirectory() as tempdir:
        with gr.Blocks() as app:
            with gr.Column(variant="panel"):
                image = gr.Image(label="请上传表格图像")
            with gr.Row(variant="panel"):
                btn = gr.Button(value="识别")
                clear_bu = gr.ClearButton([image], value="清除")
            with gr.Tabs():
                with gr.Tab(label="OCR识别结果"):
                    ocr_res = gr.Image(label="OCR识别结果")
                    gr.Button(value="flag")
                with gr.Tab(label="表格识别结果"):
                    table_res = gr.File(label="识别出的表格文件")
                    table_text = gr.TextArea(label="识别出的表格内容")
                    gr.Button(value="flag")
            clear_bu.add([ocr_res, table_res, table_text])
            btn.click(fn=dec_fn, inputs=image, outputs=[ocr_res, table_res, table_text])

            # 添加演示用例
            gr.Examples(examples='./examples', fn=dec_fn,
                        inputs=image,
                        outputs=[ocr_res, table_res, table_text],
                        cache_examples=True)

        app.launch()

  1. 此段代码主要是用于生成前端页面,以及配置按钮点击事件触发时的回调函数
  2. 生成的csv文件会保存在临时文件夹中,关闭程序后文件会自动删除

2.2 TableDec.py

class TableDec:
    def __init__(self, **kwargs):
        self.table_engine = PPStructure(show_log=True, image_orientation=True, **kwargs)

    def run_dec(self, savedirpath, image):
        ... use the PPStructure implementation to recognize the table structure and save the result to a temporary file ...
  1. 此段代码是表格识别的核心代码,通过调用PP-Structure的PPStructure类实现表格识别功能,并将识别结果保存到临时文件中
  2. 此段代码还实现了图片方向分类功能,用于判断图片是否需要旋转
  3. 将识别结果保存到临时文件中,供前端页面展示
  4. 另外,还调用excel_util.pyexecl2text实现了读取excel文件并转换为展示文本

2.3 扩展-模型选择

  • PP-Structure提供了多种模型以适应不同的识别需求。作为本项目可扩展性的探索方向,您可以在TableDec中初始化PPStructure时携带structure_version属性用于选择不同的模型。例如:
self.table_engine = PPStructure(show_log=True, image_orientation=True, structure_version='PP-Structure', **kwargs)
  • 目前支持PP-StructurePP-StructureV2两种模型,默认使用PP-StructureV2
    • paddleocr设定的全局模型参数
DEFAULT_STRUCTURE_MODEL_VERSION = 'PP-StructureV2'
SUPPORT_STRUCTURE_MODEL_VERSION = ['PP-Structure', 'PP-StructureV2']
  • 模型对应的下载链接和字典路径
{
  'PP-Structure': {
    'table': {
      'en': {
        'url': 'https://paddleocr.bj.bcebos.com/dygraph_v2.0/table/en_ppocr_mobile_v2.0_table_structure_infer.tar',
        'dict_path': 'ppocr/utils/dict/table_structure_dict.txt'
      }
    }
  },
  'PP-StructureV2': {
    'table': {
      'en': {
        'url': 'https://paddleocr.bj.bcebos.com/ppstructure/models/slanet/en_ppstructure_mobile_v2.0_SLANet_infer.tar',
        'dict_path': 'ppocr/utils/dict/table_structure_dict.txt'
      },
      'ch': {
        'url': 'https://paddleocr.bj.bcebos.com/ppstructure/models/slanet/ch_ppstructure_mobile_v2.0_SLANet_infer.tar',
        'dict_path': 'ppocr/utils/dict/table_structure_dict_ch.txt'
      }
    },
    'layout': {
      'en': {
        'url': 'https://paddleocr.bj.bcebos.com/ppstructure/models/layout/picodet_lcnet_x1_0_fgd_layout_infer.tar',
        'dict_path': 'ppocr/utils/dict/layout_dict/layout_publaynet_dict.txt'
      },
      'ch': {
        'url': 'https://paddleocr.bj.bcebos.com/ppstructure/models/layout/picodet_lcnet_x1_0_fgd_layout_cdla_infer.tar',
        'dict_path': 'ppocr/utils/dict/layout_dict/layout_cdla_dict.txt'
      }
    }
  }
}
  • 可以看到,PP-StructureV2模型使用了layouttable两种模型,分别是:picodet_lcnet_x1_0_fgd_layout_cdla_inferch_ppstructure_mobile_v2.0_SLANet

3.4.1 版面分析模型

模型名称模型简介推理模型大小下载地址dict path
picodet_lcnet_x1_0_fgd_layout基于PicoDet LCNet_x1_0和FGD蒸馏在PubLayNet 数据集训练的英文版面分析模型,可以划分文字、标题、表格、图片以及列表5类区域9.7M推理模型 / 训练模型PubLayNet dict
ppyolov2_r50vd_dcn_365e_publaynet基于PP-YOLOv2在PubLayNet数据集上训练的英文版面分析模型221.0M推理模型 / 训练模型同上
picodet_lcnet_x1_0_fgd_layout_cdlaCDLA数据集训练的中文版面分析模型,可以划分为表格、图片、图片标题、表格、表格标题、页眉、脚本、引用、公式10类区域9.7M推理模型 / 训练模型CDLA dict
picodet_lcnet_x1_0_fgd_layout_table表格数据集训练的版面分析模型,支持中英文文档表格区域的检测9.7M推理模型 / 训练模型Table dict
ppyolov2_r50vd_dcn_365e_tableBank_word基于PP-YOLOv2在TableBank Word 数据集训练的版面分析模型,支持英文文档表格区域的检测221.0M推理模型同上
ppyolov2_r50vd_dcn_365e_tableBank_latex基于PP-YOLOv2在TableBank Latex数据集训练的版面分析模型,支持英文文档表格区域的检测221.0M推理模型同上

3.4.2 表格识别模型

模型名称模型简介推理模型大小下载地址
en_ppocr_mobile_v2.0_table_structure基于TableRec-RARE在PubTabNet数据集上训练的英文表格识别模型6.8M推理模型 / 训练模型
en_ppstructure_mobile_v2.0_SLANet基于SLANet在PubTabNet数据集上训练的英文表格识别模型9.2M推理模型 / 训练模型
ch_ppstructure_mobile_v2.0_SLANet基于SLANet的中文表格识别模型9.3M推理模型 / 训练模型

三、总结

  • 通过本项目,您可以了解到如何使用飞桨PP-Structure实现图片到Excel的转换。我们提供了环境配置、代码实现和模型选择的详细步骤。如果您在使用过程中遇到任何问题,欢迎在ModelScope创空间-智能图片识别表格上提出issue,我们会及时为您解答。
  • 希望本项目能够帮助您提高工作效率,享受数字化办公的便捷。如果您觉得本项目对您有帮助,请给项目点个star,并持续关注我的个人主页ModelBulider的个人主页

标签:PP,表格,智能,dict,table,识别,Structure
From: https://blog.csdn.net/weixin_44063529/article/details/140307396

相关文章

  • 我在 python 项目中不断收到“无法识别图像文件中的数据”错误
    我正在尝试向我的TK窗口添加一个图标,但我不断收到一条错误消息:Traceback(mostrecentcalllast):File"C:\Users\roger\source\repos\PythonApplication\PythonApplication.py",line7,in<module>windowIcon=tk.PhotoImage(file="C:/Users/roger/Downloa......
  • WEB前端08-综合案例(动态表格)
    使用HTML、CSS和JavaScript创建动态表格在本教程中,我们将创建一个动态表格,允许用户添加行、选择项目,并执行批量操作,如全选或删除选中的行。我们将通过HTML、CSS和JavaScript来实现这一功能。让我们逐步了解每个部分是如何协同工作的。HTML结构我们的HTML文档......
  • 构建未来水利管理的新生态:聚焦智慧水利解决方案的创新与发展,探讨其如何融合物联网、云
    目录一、引言:智慧水利的时代背景与意义二、智慧水利的核心技术体系1.物联网技术:感知水世界的神经末梢2.云计算技术:数据处理与存储的云端大脑3.5G通信技术:连接万物的信息高速路三、智慧水利的创新实践与发展趋势1.精准水资源管理与调度2.智能防洪抗旱与减灾3.智......
  • 基于单片机的温控光控智能窗帘设计探讨
    摘要:文章使用的核心原件是AT89C52单片机,以此为基础进行模块化的设计,在整个设计中通过加入光检测模块和温度检测模块,从而对室内的温度和光照强度进行检测,然后将检测得到的数据传输给单片机,单片机对电机的继电圈的通断进行控制,从而通过电机的正转和反转,从而实现对窗帘开合......
  • 闸门自动控制系统:引领水利管理步入智能时代
    在水利工程建设与管理中,闸门作为控制水流的关键设施,其操作的安全性和精准性直接影响着工程的效益。随着科技的进步,闸门自动控制系统以其远程监控、现地监控的先进特性,为水利工程管理带来了革命性的变革。闸门自动控制系统综合运用了成熟的工业控制技术、传感器技术、数据传输......
  • 智能一体化闸门哪家好:探索市场与选择
    在现代化的水利管理和农业灌溉领域,智能一体化闸门已经成为了一个重要的工具。它通过高度集成的智能化设计和远程控制功能,为用户带来了极大的便利。然而,在众多的品牌中,究竟哪家的智能一体化闸门更值得信赖呢?本文将带您一探究竟。首先,我们需要明确智能一体化闸门的核心价值。它......
  • 智能测控一体化闸门:加强灌区管理
    在农业灌溉领域,技术的革新正不断推动着管理模式的升级。其中,智能测控一体化闸门作为灌区明渠管理的智能化核心单元,以其独特的功能特点,为灌区的精准管理和高效运营注入了新的活力。智能测控一体化闸门实现了渠道的全面自动化控制与精准测量。系统能够实时采集水位、过闸流速等......
  • 基于mnist数据集的手写数字识别模型的训练可视化预测
    使用 tensorflow库创建训练模型数据集使用公开的mnist 一、构建模型fromtensorflow.keras.layersimportDense,DropoutimporttensorflowastfdefmnistModel():model=tf.keras.Sequential([tf.keras.layers.Flatten(input_shape=(28,28)),#对......
  • 【HZHY-AI300G智能盒试用连载体验】安装Neuron工业协议网关软件
    目录下载和安装软件运行本文首发于:【HZHY-AI300G智能盒试用连载体验】+智能工业互联网网关-北京合众恒跃科技有限公司-电子技术论坛-广受欢迎的专业电子论坛!为了能够将RS485等接口设备转换为MQTT设备,我使用了Neuron工业协议网关软件。Neuron是EMQ(杭州映云科技有......
  • Python按条件筛选、剔除表格数据并绘制剔除前后的直方图
      本文介绍基于Python语言,读取Excel表格文件数据,以其中某一列数据的值为标准,对于这一列数据处于指定范围的所有行,再用其他几列数据的数值,加以数据筛选与剔除;同时,对筛选前、后的数据分别绘制若干直方图,并将结果数据导出保存为一个新的Excel表格文件的方法。  首先,我们来明确一......