PP-Structure 快速入门

PP-Structure 快速入门

  • 1. 环境准备
  • 2.快速使用
  • 2.1 命令行使用
  • 2.1.1 图像定位+布局分析+表格识别
  • 2.1.2 布局分析+表格识别
  • 2.1.3 布局分析
  • 2.1.4 表格识别
  • 2.1.5 关键信息提取
  • 2.1.6 布局恢复
  • 2.2 python 脚本使用
  • 2.2.1 图像方向+布局分析+表格识别
  • 2.2.2 布局分析+表格识别
  • 2.2.3 布局分析
  • 2.2.4 表格识别
  • 2.2.5 关键信息提取
  • 2.2.6 布局恢复
  • 2.3 结果描述
  • 2.3.1 布局分析+表格识别
  • 2.3.2 关键信息提取
    -2.4 参数说明
    -3. 概要

English | 简体中文

PP-Structure 文档分析

  • 1. 简介
  • 2. 特性
  • 3. 效果展示
    • 3.1 版面分析和表格识别
    • 3.2 版面恢复
    • 3.3 关键信息抽取
  • 4. 快速体验
  • 5. 模型库

1. 简介

PP-Structure是PaddleOCR团队自研的智能文档分析系统,旨在帮助开发者更好的完成版面分析、表格识别等文档理解相关任务。

PP-StructureV2系统流程图如下所示,文档图像首先经过图像矫正模块,判断整图方向并完成转正,随后可以完成版面信息分析与关键信息抽取2类任务。

  • 版面分析任务中,图像首先经过版面分析模型,将图像划分为文本、表格、图像等不同区域,随后对这些区域分别进行识别,如,将表格区域送入表格识别模块进行结构化识别,将文本区域送入OCR引擎进行文字识别,最后使用版面恢复模块将其恢复为与原始图像布局一致的word或者pdf格式的文件;
  • 关键信息抽取任务中,首先使用OCR引擎提取文本内容,然后由语义实体识别模块获取图像中的语义实体,最后经关系抽取模块获取语义实体之间的对应关系,从而提取需要的关键信息。

更多技术细节:👉 PP-StructureV2技术报告 中文版,英文版。

PP-StructureV2支持各个模块独立使用或灵活搭配,如,可以单独使用版面分析,或单独使用表格识别,点击下面相应链接获取各个独立模块的使用教程:

  • 版面分析
  • 表格识别
  • 关键信息抽取
  • 版面复原

2. 特性

PP-StructureV2的主要特性如下:

  • 支持对图片/pdf形式的文档进行版面分析,可以划分文字、标题、表格、图片、公式等区域;
  • 支持通用的中英文表格检测任务;
  • 支持表格区域进行结构化识别,最终结果输出Excel文件
  • 支持基于多模态的关键信息抽取(Key Information Extraction,KIE)任务-语义实体识别(Semantic Entity Recognition,SER)和关系抽取(Relation Extraction,RE);
  • 支持版面复原,即恢复为与原始图像布局一致的word或者pdf格式的文件;
  • 支持自定义训练及python whl包调用等多种推理部署方式,简单易用;
  • 与半自动数据标注工具PPOCRLabel打通,支持版面分析、表格识别、SER三种任务的标注。

3. 效果展示

PP-StructureV2支持各个模块独立使用或灵活搭配,如,可以单独使用版面分析,或单独使用表格识别,这里仅展示几种代表性使用方式的可视化效果。

3.1 版面分析和表格识别

下图展示了版面分析+表格识别的整体流程,图片先有版面分析划分为图像、文本、标题和表格四种区域,然后对图像、文本和标题三种区域进行OCR的检测识别,对表格进行表格识别,其中图像还会被存储下来以便使用。

3.1.1 版面识别返回单字坐标

下图展示了基于上一节版面分析对文字进行定位的效果, 可参考文档。

3.2 版面恢复

下图展示了基于上一节版面分析和表格识别的结果进行版面恢复的效果。

3.3 关键信息抽取

  • SER

图中不同颜色的框表示不同的类别。

  • RE

图中红色框表示问题,蓝色框表示答案问题答案之间使用绿色线连接。

4. 快速体验

请参考快速使用教程。

5. 模型库

部分任务需要同时用到结构化分析模型和OCR模型,如表格识别需要使用表格识别模型进行结构化解析,同时也要用到OCR模型对表格内的文字进行识别,请根据具体需求选择合适的模型。

结构化分析相关模型下载可以参考:

  • PP-Structure 模型库

OCR相关模型下载可以参考:

  • PP-OCR 模型库

1. 环境准备

1.1 安装 PaddlePaddle

如果你没有 Python 环境,请参考 环境准备。

  • 如果你的机器上安装了 CUDA 9 或 CUDA 10,请运行以下命令进行安装
  python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple
  • 如果你的机器上没有可用的 GPU,请运行以下命令安装 CPU 版本
python3 -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple

更多软件版本要求请参考安装文档中的说明进行操作。

1.2 安装PaddleOCR Whl包

# 安装paddleocr,建议2.6版本
pip3 install "paddleocr>=2.6.0.3"# 安装图片方向分类依赖包paddleclas(如果不用图片方向分类可以跳过)
pip3 install paddleclas>=2.4.3

2. 快速使用

2.1 命令行使用

2.1.1 图像方向+布局分析+表格识别
paddleocr --image_dir=ppstructure/docs/table/1.png --type=structure --image_orientation=true

2.1.2 布局分析+表格识别
paddleocr --image_dir=ppstructure/docs/table/1.png --type=structure

2.1.3 布局分析
paddleocr --image_dir=ppstructure/docs/table/1.png --type=structure --table=false --ocr=false

2.1.4 表格识别
paddleocr --image_dir=ppstructure/docs/table/table.jpg --type=structure --layout=false

2.1.5 关键信息提取

关键信息提取目前不支持 whl 包使用,详细使用教程请参考:推理文档。

2.1.6 布局恢复(PDF 转 Word)

提供两种布局恢复方式,详细使用教程请参考:布局恢复。

  • PDF解析
  • OCR

使用PDF解析恢复(仅支持pdf作为输入):

paddleocr --image_dir=ppstructure/docs/recovery/UnrealText.pdf --type=structure --recovery=true --use_pdf2docx_api=true

使用OCR恢复:

paddleocr --image_dir=ppstructure/docs/table/1.png --type=structure --recovery=true --lang='en'

2.2 python脚本使用

2.2.1 图像方向+布局分析+表格识别
import os
import cv2
from paddleocr import PPStructure,draw_structure_result,save_structure_restable_engine = PPStructure(show_log=True, image_orientation=True)save_folder = './output'
img_path = 'ppstructure/docs/table/1.png'
img = cv2.imread(img_path)
result = table_engine(img)
save_structure_res(result, save_folder,os.path.basename(img_path).split('.')[0])for line in result:
line.pop('img')
print(line)from PIL import图片font_path = 'doc/fonts/simfang.ttf' # PaddleOCR下提供字体包
image = Image.open(img_path).convert('RGB')
im_show = draw_structure_result(image, result,font_path=font_path)
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')

2.2.2 布局分析+表格识别
import os
import cv2
from paddleocr import PPStructure,draw_structure_result,save_structure_restable_engine = PPStructure(show_log=True)save_folder = './output'
img_path = 'ppstructure/docs/table/1.png'
img = cv2.imread(img_path)
result = table_engine(img)
save_structure_res(result, save_folder,os.path.basename(img_path).split('.')[0])for line in result:
line.pop('img')
print(line)from PIL import Imagefont_path = 'doc/fonts/simfang.ttf' # PaddleOCR 提供的字体
image = Image.open(img_path).convert('RGB')
im_show = draw_structure_result(image, result,font_path=font_path)
im_show = Image.fromarray(im_show)
im_show.save('result.jpg')

2.2.3 布局分析
import os
import cv2
from paddleocr import PPStructure,save_structure_restable_engine = PPStructure(table=False,ocr=False,show_log=True)save_folder = './output'
img_path = 'ppstructure/docs/table/1.png'
img = cv2.imread(img_path)
result = table_engine(img)
save_structure_res(result,save_folder,os.path.basename(img_path)。split('.'[0])对于结果中的行:
line.pop('img'print(line)
import os
import cv2
from paddleocr import PPStructure,save_structure_resocr_engine = PPStructure(table=False, ocr=True, show_log=True)save_folder = './output'
img_path = 'ppstructure/docs/recovery/UnrealText.pdf'
result = ocr_engine(img_path)
for index, res in enumerate(result):save_structure_res(res, save_folder, os.path.basename(img_path).split('.')[0], index)for res in result:for line in res:line.pop('img')print(line)
import os
import cv2
import numpy as np
from paddleocr import PPStructure,save_structure_res
from paddle.utils import try_import
from PIL import Imageocr_engine = PPStructure(table=False, ocr=True, show_log=True)save_folder = './output'
img_path = 'ppstructure/docs/recovery/UnrealText.pdf'fitz = try_import("fitz")
imgs = []
with fitz.open(img_path) as pdf:for pg in range(0, pdf.page_count):page = pdf[pg]mat = fitz.Matrix(2, 2)pm = page.get_pixmap(matrix=mat, alpha=False)# if width or height > 2000 pixels, don't enlarge the imageif pm.width > 2000 or pm.height > 2000:pm = page.get_pixmap(matrix=fitz.Matrix(1, 1), alpha=False)img = Image.frombytes("RGB", [pm.width, pm.height], pm.samples)img = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR)imgs.append(img)for index, img in enumerate(imgs):result = ocr_engine(img)save_structure_res(result, save_folder, os.path.basename(img_path).split('.')[0], index)for line in result:line.pop('img')print(line)
2.2.4 表格识别
import os
import cv2
from paddleocr import PPStructure,save_structure_restable_engine = PPStructure(layout=False, show_log=True)save_folder = './output'
img_path = 'ppstructure/docs/table/table.jpg'
img = cv2.imread(img_path)
result = table_engine(img)
save_structure_res(result, save_folder, os.path.basename(img_path).split('.')[0])for line in result:line.pop('img')print(line)
2.2.5 密钥信息提取

密钥信息提取目前不支持 whl 包使用,详细使用教程请参考:密钥信息提取。

2.2.6 布局恢复
import os
import cv2
from paddleocr import PPStructure,save_structure_res
from paddleocr.ppstructure.recovery.recovery_to_doc import sorted_layout_boxes, convert_info_docx# Chinese image
table_engine = PPStructure(recovery=True)
# English image
# table_engine = PPStructure(recovery=True, lang='en')save_folder = './output'
img_path = 'ppstructure/docs/table/1.png'
img = cv2.imread(img_path)
result = table_engine(img)
save_structure_res(result, save_folder, os.path.basename(img_path).split('.')[0])for line in result:line.pop('img')print(line)h, w, _ = img.shape
res = sorted_layout_boxes(result, w)
convert_info_docx(img, res, save_folder, os.path.basename(img_path).split('.')[0])

2.3 结果说明

PP-Structure 返回的是一串字典,示例如下:

2.3.1 布局分析 + 表格识别
[
{ 'type': 'Text',
'bbox': [34, 432, 345, 462],
'res': ([[36.0, 437.0, 341.0, 437.0, 341.0, 446.0, 36.0, 447.0], [41.0, 454.0, 125.0, 453.0, 125.0, 459.0, 41.0, 460.0]],
[('Tigure-6. CNN 和 IPT 模型使用 difforen', 0.90060663), ('Tent ', 0.465441)])
}
]

dict中各个字段说明如下:

fielddescription
type图片区域的类型。
bbox图片区域在原图中的坐标,分别为[左上角x,左上角y,右下角x,右下角y]。
res图片区域的OCR或者表格识别结果。
table:一个dict,字段说明如下:
        html:表格的html str。
       代码使用方式中,设置return_ocr_result_in_table=True,调用时可得到表格区域内每段文字的检测识别结果,对应以下字段:
        boxes:文字检测框。
      rec_res:文字识别结果。
OCR:包含每段文字的检测框和识别结果的元组。

识别完成后,每幅图像在output字段指定的目录下都会有一个同名的目录,图像中每张表格都会被存储为excel,图片区域会被裁剪保存,excel和图片的文件名都是它们在图像中的坐标。

/output/table/1/
└─ res.txt
└─ [454, 360, 824, 658].xlsx表格识别结果
└─ [16, 2, 828, 305].jpg图片中
└─ [17, 361, 404, 711].xlsx表格识别结果

2.3.2 关键信息提取

请参考:关键信息提取 。

2.4 参数说明

fielddescriptiondefault
output结果保存路径./output/table
table_max_len表格结构模型中图片长边调整大小488
table_model_dir表格结构模型推理模型路径None
table_char_dict_path表格结构模型字典路径…/ppocr/utils/dict/table_structure_dict.txt
merge_no_span_structure表格识别模型中是否合并 ‘<td>’ 和 ‘</td>’False
layout_model_dir布局分析模型推理模型路径None
layout_dict_path布局分析模型字典路径…/ppocr/utils/dict/layout_publaynet_dict.txt
layout_score_threshold布局分析模型的框阈值路径0.5
layout_nms_threshold布局分析模型的nms阈值路径0.5
kie_algorithmkie模型算法LayoutXLM
ser_model_dirSer模型推理模型路径None
ser_dict_pathSer模型的字典路径…/train_data/XFUND/class_list_xfun.txt
modestructure or kiestructure
image_orientationforward中是否进行图像方向分类False
layoutforward中是否进行布局分析True
tableforward中是否进行表格识别True
ocr布局分析中是否对非表格区域进行ocr,当layout为False时会自动设置为FalseTrue
recoveryforward中是否进行布局恢复False
save_pdfrecovery时是否将docx转换为pdfFalse
structure_version结构版本,可选PP-structure和PP-structurev2PP-structure

大部分参数与PaddleOCR whl包一致,参见whl包文档

3. 总结

通过本节内容,您可以掌握通过PaddleOCR whl包使用PP-Structure相关函数的方法。更详细的使用教程包括模型训练、推理和部署等,请参考文档教程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1555625.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

正则表达式匹配英文字符

正则表达式匹配英文 20 个字符&#xff0c;包括大写&#xff0c;小写。 根据搜索结果&#xff0c;看到 honeymoose 分享过一个正则表达式的要求是: 匹配 20 个英文字符(大写、小写都包括)。 那么这个正则表达式可以写成: ^[a-zA-Z]{20}$解释一下: ^ 表示匹配字符串的开始[a-z…

pWnos1.0 靶机渗透 (Perl CGI 的反弹 shell 利用)

靶机介绍 来自 vulnhub 主机发现 ┌──(kali㉿kali)-[~/testPwnos1.0] …

EtherCAT 转 EtherNet/IP, EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关

EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关https://item.taobao.com/item.htm?ftt&id822721028899协议转换通信网关 EtherCAT 转 EtherNet/IP GW系列型号 MS-GW12 概述 MS-GW12 是 EtherCAT 和 EtherNet/IP 协议转换网关&#xff0c;为用户提供两…

基于Vue的汽车维修配件综合管理系统设计与实现SpringBoot后端源码

目录 1. 系统背景 2. 系统目标 3. 功能模块 4. 技术选型 5. 关键技术点 6. 实现步骤 7. 项目意义 8. 后期展望 1. 系统背景 市场需求分析&#xff1a;随着汽车保有量的不断增加&#xff0c;汽车维修和保养的需求日益增长。车主对维修质量和配件质量的要求也越来越高。汽…

安全防护检测数据集 3500张 PPE 动火 带标注 voc yolo 12类

安全防护检测数据集 3500张 PPE 动火 带标注 voc yolo 分类名: (图片张数&#xff0c; 标注个数) he Imet: (3649&#xff0c;10494) no_ goggles: (2197&#xff0c;4545) no_ mask: (2986&#xff0c; 6918) no_ vest: (2602&#xff0c; 7462) boots: (1802&#xff0c; 765…

VirtualBox虚拟机连接宿主机并能够上网(小白向)

现存问题 windows系统主要使用vmare和virtualbox两种虚拟机&#xff0c;virtualbox相对于vmare更加轻便&#xff0c;但少有博客能够详细说明使用virtualbox的教程。踩了网上的坑后&#xff0c;决定写一篇文章介绍virtualbox虚拟机上网的流程。 需求 1. virtualbox虚拟机与宿主机…

一篇文章搞懂Android 刷卡器对接:RS232 DB9串口通讯,通讯设置,刷卡器API介绍;代码示例;MDB协议;

目录 前言 在一些国家,还没有普及扫码支付的时候,消费者会纸币、硬币或者刷卡进行支付,这里我们讲解一下刷卡支付。 在市面上,有哪家刷卡器公司可以说的上是开通了很多国家的支付银行,那么Nayax和Pax可以说的上是名列前茅,他们适配了很多国家,对接其他国家的银行,让我…

ChatGPT 更新 Canvas 深度测评:论文写作这样用它!

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 ChatGPT又又更新了&#xff1a;基于ChatGPT 4o模型的Canvas 写作和代码功能。目前&#xff0c;仅针对Plus和Team用户。是一个独立的模块&#xff0c;如下所示&#xff1a; 官方…

ISO IEC 18004 2024/2015 Chinese 下载

ISO_IEC 18004 2024.pdf - 蓝奏云文件大小&#xff1a;40.3 M|https://610402220623.lanzouq.com/iqZ122bnx0yjISO IEC 18004-2015 zh-CN.pdf - 蓝奏云文件大小&#xff1a;34.1 M|https://610402220623.lanzouq.com/iEXSB2bnx0hc

G. Gears (2022 ICPC Southeastern Europe Regional Contest. )

G. Gears 思路&#xff1a; 本身这个题并不难&#xff0c;奈何卡了很久后看了题解才做出来&#xff0c;感觉自己好笨。 很容易想到的是&#xff0c;只要确定了一个齿轮的位置&#xff0c;其他齿轮的位置都可以直接推出来。所以当前目标是如何确定第一个齿轮的位置。 令 x [ i …

系统守护者:使用PyCharm与Python实现关键硬件状态的实时监控

目录 前言 系统准备 软件下载与安装 安装相关库 程序准备 主体程序 更改后的程序&#xff1a; 编写.NET程序 前言 在现代生活中&#xff0c;电脑作为核心工具&#xff0c;其性能和稳定性的维护至关重要。为确保电脑高效运行&#xff0c;我们不仅需关注软件优化&#xf…

Koa2项目实战2(路由管理、项目结构优化)

添加路由&#xff08;处理不同的URL请求&#xff09; 路由&#xff1a;根据不同的URL&#xff0c;调用对应的处理函数。 每一个接口服务&#xff0c;最核心的功能是&#xff1a;根据不同的URL请求&#xff0c;返回不同的数据。也就是调用不同的接口返回不同的数据。 在 Node…

数据服务-备份服务(rsync)

1. 概述 特点&#xff1a; 1. rsync是个服务也是命令 2. 使用方便,具有多种模式 3. 传输数据的时候是增量传输 1.1 增量与全量 1. 增量&#xff1a;只会把修改&#xff0c;新建的内容推走 2. 全量&#xff1a;无论数据多少全部推送 1.2 把/etc/目录传输到另一台机器的/tmp/下面…

安卓 /proc 目录详解:从内核到进程的桥梁

在安卓系统中&#xff0c;/proc 目录是开发者、调试者、甚至是普通用户深入了解系统状态、性能及行为的一个重要入口。这个虚拟文件系统不仅包含了丰富的内核信息&#xff0c;还反映了运行中的每个进程的状态。 /proc 文件系统 /proc 文件系统&#xff08;procfs&#xff09;是…

前端编程艺术(3)---JavaScript

目录 1.JavaScript 1.输出 2.变量和数据类型 3.运算符 4.数组 5.函数 6.面向对象 7.ES6面向对象 2.BOM 1.document对象 3.DOM 4.JSON 1.JavaScript JavaScript是一种脚本编程语言&#xff0c;通常用于为网页增加交互性和动态效果。它是一种高级语言&#xff…

C++ 算法学习——1.6 差分算法与二维差分算法

一维差分算法概述&#xff1a; 差分算法是一种用于计算序列中相邻元素之间差值的技术。在C中&#xff0c;STL&#xff08;标准模板库&#xff09;提供了std::adjacent_difference函数来实现差分算法。 std::adjacent_difference函数&#xff1a; std::adjacent_difference函数位…

余承东直播论道智能驾驶:激光雷达不可或缺,华为ADS 3.0引领安全创新

华为余承东:激光雷达,智能驾驶安全性的关键 9月29日,华为消费者业务集团CEO余承东在一场引人注目的直播中,与知名主持人马东就智能驾驶技术的最新进展进行了深入交流。在这场直播中,余承东针对激光雷达在智能驾驶中的必要性问题,发表了明确且深刻的观点,引发了业界和公众…

网关路由登录校验

网关过滤器 登录校验必须在请求转发到微服务之前做&#xff0c;否则就失去了意义。而网关的请求转发是Gateway内部代码实现的&#xff0c;要想在请求转发之前做登录校验&#xff0c;就必须了解Gateway内部工作的基本原理。 暂时无法在飞书文档外展示此内容 如图所示&#xff…

一、Python(介绍、环境搭建)

一、介绍 Python 是一种高级编程语言&#xff0c;具有简洁易读的语法、丰富的库和强大的功能。Python是解释型语言&#xff0c;运行代码必须依赖安装好的解释器。Python目前存在两个版本&#xff1a;Python2、Python3&#xff08;主流使用&#xff09; 二、环境搭建 1.安装P…

四、函数顶层变量

函数&顶层变量 函数定义创建和使用 顶层变量递归函数实用库函数高阶函数与lambda表达式函数类型变量类型别名匿名函数lambda表达式基本用法lambda的简写 内联函数 函数 定义 其实函数我们在一开始就在使用了&#xff1a; fun main() {println("Hello World") …