ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

PaddleX 表格结构识别任务数据标注教程:从 PPOCRLabel 标注到 PubTabNet 数据集构建

PaddleX 表格结构识别任务数据标注教程:从 PPOCRLabel 标注到 PubTabNet 数据集构建 人工智能大模型低代码计算机视觉深度学习NLP模型推理服务RAG【免费下载链接】PaddleXAll-in-One Development Tool based on PaddlePaddle项目地址https://gitcode.com/paddlepaddle/PaddleX点击查看免费下载本文是 PaddleX 表格结构识别Table Structure Recognition任务模块的数据标注指南完整介绍从 PPOCRLabel 图像标注、Excel 结构标注到导出 gt.txt 标注文件的五步工作流并逐字段解析 PaddleX 所采用的 PubTabNet 数据集格式结合仓库源码数据集校验、划分与推理解码实现讲解每个标注字段的生成原理与校验规则。读完本文你将能够为自己的私有表格数据集完成规范化标注并通过 PaddleX 的数据校验与二次开发流程将标注数据直接用于 SLANet 等表格结构识别模型的训练。1. 任务概述为什么要进行表格结构数据标注表格结构识别的目标是识别表格的行、列与单元格位置将不可编辑的表格图片转换为可编辑的结构化形式如 HTML并据此把图片中的表格转换为 Excel 格式。这一能力是 PaddleX 表格识别类产线如通用表格识别产线、文档场景信息抽取产线的核心组成部分其模块性能直接决定整个表格识别系统的准确性与效率。因此表格数据的标注工作也天然分为两条并行线文字信息标注文字与位置在 PPOCRLabel 软件中完成标注表格内每个单元格中的文字及其边界框位置表格结构信息标注单元格合并与行列关系在外部 Excel 软件中完成标注单元格的合并情况使其与原图的表格结构一致。两者配合才能形成一套完整的、可用于训练的结构化标注数据。2. 数据标注使用 PPOCRLabelv2 的五步工作流进行表格数据标注时PaddleX 官方推荐使用 PPOCRLabelv2 工具。标注的整体思路是在 PPOCRLabel 中完成表格内的文字与位置标注在外部 Excel 中完成表格结构单元格合并标注最后统一导出为 JSON 标注文件。推荐步骤如下2.1 表格识别自动预标注打开表格图片后点击软件右上角的表格识别按钮。软件会调用 PP-Structure 中的表格识别模型自动为表格打上标签同时弹出一个与图片对应的 Excel 文件。这一步是预标注模型先给出一个初始结果后续人工在此结果上修正。2.2 更改标注结果以单元格为单位添加标注框以表格中的单元格为单位增加标注框即一个单元格内的所有文字都标记为一个框而不是按自然行文本切分。对标注框点击鼠标右键选择单元格重识别即可利用模型自动识别单元格内的文字减少手动录入的工作量。注意这一步标注的是文字与位置其粒度必须是单元格因为后续表格结构重建需要知道每个单元格中到底有哪些文字。2.3 调整单元格顺序点击软件菜单视图 - 显示框编号打开标注框序号显示然后在软件界面右侧拖动识别结果一栏下的所有结果使得标注框编号按照从左到右、从上到下的顺序排列按行依次标注。这一顺序与后续生成的 HTMLtokens序列中td的排列顺序直接对应顺序错乱会导致表格结构重建时单元格内容错位。2.4 标注表格结构在外部 Excel 中标记单元格在外部 Excel 软件中将存在文字的单元格标记为任意标识符如1保证 Excel 中的单元格合并情况与原图相同即可。此处强调Excel 中的单元格文字不需要与图片中的文字完全相同——Excel 只负责记录结构哪些单元格被合并、行列如何分布文字内容本身由 PPOCRLabel 中的标注框提供。2.5 导出 JSON 格式标注关闭所有表格图像对应的 Excel 文件点击软件菜单文件 - 导出表格标注生成 gt.txt 标注文件。该文件即训练所需的标注文件每行对应一张表格图片的一条 JSON 记录。3. 数据格式PaddleX 表格结构识别的数据集组织方式PaddleX 针对表格结构识别任务定义的数据集组织结构和标注格式如下dataset_dir # 数据集根目录目录名称可以改变 ├── images # 图像的保存目录目录名称可以改变但要注意和 train.txt / val.txt 的内容对应 ├── train.txt # 训练集标注文件文件名称不可改变 │ # 内容举例 │ # {filename: images/border.jpg, html: {structure: {tokens: [tr, td, colspan\3\, , /td, /tr, tr, td, /td, td, /td, td, /td, /tr, tr, td, /td, td, /td, td, /td, /tr]}, cells: [{tokens: [、, 自, 我], bbox: [[[5, 2], [231, 2], [231, 35], [5, 35]]]}, {tokens: [9], bbox: [[[168, 68], [231, 68], [231, 98], [168, 98]]]}]}, gt: htmlbodytabletrtd colspan\3\、自我/td/trtrtdAghas/tdtd失吴/tdtd月/td/trtrtdlonwyCau/tdtd/tdtd9/td/tr/table/body/html} └── val.txt # 验证集标注文件文件名称不可改变 # 内容举例 # {filename: images/no_border.jpg, html: {structure: {tokens: [tr, td, colspan\2\, , /td, td, rowspan\2\, , /td, td, rowspan\2\, , /td, /tr, tr, td, /td, td, /td, /tr, tr, td, /td, td, /td, td, /td, td, /td, /tr]}, cells: [{tokens: [a, d, e, s], bbox: [[[0, 4], [284, 4], [284, 34], [0, 34]]]}, {tokens: [$, 7, 5, 1, 8, ., 8, 3], bbox: [[[442, 67], [616, 67], [616, 100], [442, 100]]]}]}, gt: htmlbodytabletrtd colspan\2\ades/tdtd rowspan\2\研究中心主任滕建/tdtd rowspan\2\品、家居用品位居商/td/trtrtdnaut/tdtd则是创办思/td/trtrtd各方意见建议确保/tdtd9.66/tdtd道开业负责/tdtd$7518.83/td/tr/table/body/html}标注文件采用PubTabNet数据集格式每行内容都是一个python字典。整理数据时请参照上述规范也可以直接下载参考 示例数据集 对照查看。3.1 标注字典字段逐项解析以train.txt中的示例行为例将标注字典拆解如下字段含义示例值filename图像文件路径相对数据集根目录images/border.jpghtml.structure.tokens表格 HTML 结构 token 序列按预测输出的顺序列出tr、td及属性 token[tr, td, colspan\3\, , ...]html.cells单元格列表每个单元格含tokens该单元格内的文字 token 序列与bbox四边形四角坐标格式为[[x1,y1],[x2,y2],[x3,y3],[x4,y4]]{tokens: [、, 自, 我], bbox: [[[5, 2], [231, 2], [231, 35], [5, 35]]]}gt完整的 HTML 真值字符串即最终表格重建目标htmlbodytable.../table/body/html几点关键约定tokens中的td与colspan3、是分开的 token这是因为模型以 token 序列为预测目标属性值colspan/rowspan表示该单元格跨列/跨行数对应 Excel 中的单元格合并关系cells[].bbox是四角点坐标而非两点式矩形与 PaddleX 推理输出中单元格边界框的解码格式保持一致gt字段是最终重建的完整 HTML用于训练时的序列监督html.structure.tokens与html.cells则分别提供结构序列与位置信息的监督信号filename指向的图片路径必须与images目录实际内容一一对应train.txt与val.txt中引用的图片文件名不得写错否则数据校验阶段会直接报错。4. 源码佐证标注数据在 PaddleX 中的校验与使用4.1 数据集类型与校验逻辑PaddleX 将表格结构识别数据集定义为PubTabTableRecDataset类型。数据校验逻辑位于 check_dataset.py其核心规则包括train.txt与val.txt必须同时存在于数据集根目录文件名称不可改变否则抛出DatasetFileNotFoundError错误提示为 Ensure that bothtrain.txtandval.txtexist in {dataset_dir}对每一行标注按json.loads解析并读取filename指向的图片图片文件不存在同样报错校验通过后会在输出目录check_dataset/demo_img/下生成若干张样本可视化图片默认 10 张并在校验结果 JSON 中统计train_samples与val_samples数量。4.2 数据集划分逻辑如果你需要重新划分训练/验证集比例PaddleX 的 split_dataset.py 提供了实现读取现有train.txt/val.txt中的全部行后随机打乱shuffle再按train_rate与val_rate重新切分写入且要求两者之和必须等于 100。原标注文件会被重命名为train.txt.bak/val.txt.bak保留。4.3 推理侧的 token 解码印证在推理端PaddleX 的解码器 processors.pyTableLabelDecode与标注格式一一对应模型输出被解码为structuretoken 序列并在首尾补上html、body、table与收尾标签遇到td类 token[td, td, td/td]时同步取出对应单元格的边界框坐标并映射回原图尺寸。可见训练标注中的structure.tokenscells结构与推理输出结构完全同构标注质量的优劣将直接决定模型结构的重建精度。5. 校验并准备训练数据实操命令标注完成、整理好目录结构后即可使用 PaddleX 进行数据校验只有通过数据校验的数据才可以进行模型训练。以 SLANet 的配置文件为例wget https://paddle-model-ecology.bj.bcebos.com/paddlex/data/table_rec_dataset_examples.tar -P ./dataset tar -xf ./dataset/table_rec_dataset_examples.tar -C ./dataset/python main.py -c paddlex/configs/modules/table_structure_recognition/SLANet.yaml \ -o Global.modecheck_dataset \ -o Global.dataset_dir./dataset/table_rec_dataset_examples命令运行成功后日志中会打印Check dataset passed !校验结果保存在./output/check_dataset_result.json其中check_pass: true表示数据集格式符合要求train_samples/val_samples给出各集样本数可视化样例图保存在./output/check_dataset目录下。如需按比例重新划分数据集可在配置文件的CheckDataset.split下设置CheckDataset: split: enable: True train_percent: 90 val_percent: 10或直接通过命令行参数追加python main.py -c paddlex/configs/modules/table_structure_recognition/SLANet.yaml \ -o Global.modecheck_dataset \ -o Global.dataset_dir./dataset/table_rec_dataset_examples \ -o CheckDataset.split.enableTrue \ -o CheckDataset.split.train_percent90 \ -o CheckDataset.split.val_percent106. 标注数据 → 模型训练完整闭环数据集通过校验后即可基于此标注数据启动训练同样以 SLANet 为例SLANet 的默认训练配置见 SLANet.yamlPaddleX 表格结构识别模块共支持SLANet、SLANet_plus、SLANeXt_wired、SLANeXt_wireless四个模型完整列表见 model_list.pypython main.py -c paddlex/configs/modules/table_structure_recognition/SLANet.yaml \ -o Global.modetrain \ -o Global.dataset_dir./dataset/table_rec_dataset_examples训练过程中可通过-o追加参数调整超参数例如指定前两张 GPU 训练-o Global.devicegpu:0,1、设置训练轮数-o Train.epochs_iters10等。模型评估与推理预测分别通过-o Global.modeevaluate与-o Global.modepredict完成更多二次开发细节可参考 表格结构识别模块使用教程。最终训练产出的权重既可以直接替换进 PaddleX 的 通用表格识别产线也可以集成到自有项目中。7. 小结本教程以 PPOCRLabelv2 五步标注工作流为起点完整讲解了 PaddleX 表格结构识别任务的数据标注方法与 PubTabNet 标注格式文字与结构两条标注线并行PPOCRLabel 负责文字与位置以单元格为粒度Excel 负责单元格合并结构标注字典的四个关键字段filename、html.structure.tokens、html.cells、gt分别承载图片路径、结构 token 序列、单元格文字与四角坐标、完整 HTML 真值数据必须满足train.txtval.txtimages的目录规范并通过数据校验才能进入训练流程。按照本文规范准备的私有数据可直接用于 SLANet/SLANet_plus/SLANeXt 系列模型的训练与微调支撑复杂有线表、无线表的精细化结构识别场景。赞分享人工智能大模型低代码计算机视觉深度学习NLP模型推理服务RAG【免费下载链接】PaddleXAll-in-One Development Tool based on PaddlePaddle项目地址https://gitcode.com/paddlepaddle/PaddleX点击查看免费下载相关推荐PaddleX 表格结构识别任务模块数据标注全指南PPOCRLabelv2 标注流程与 PubTabNet 数据格式详解PaddleX 表格结构识别任务模块数据标注全指南PPOCRLabelv2 标注流程与 PubTabNet 数据格式详解 导读表格结构识别Table St人工智能大模型低代码计算机视觉深度学习NLP模型推理服务RAG微调语音PaddleX 图像分类任务数据标注与数据集构建指南从 Labelme 标注到 ClsDataset 格式PaddleX 图像分类任务数据标注与数据集构建指南从 Labelme 标注到 ClsDataset 格式 本文档面向使用 PaddleX 训练图像分类单模型人工智能大模型低代码计算机视觉深度学习NLP模型推理服务RAG微调语音PaddleX 文本检测与识别数据标注全指南PPOCRLabel 标注到 TextDetDataset 格式整理PaddleX 文本检测与识别数据标注全指南PPOCRLabel 标注到 TextDetDataset 格式整理 本文以 PaddleX 仓库中的 文本检测/人工智能大模型低代码计算机视觉深度学习NLP模型推理服务RAG微调语音上一篇Blender 3MF插件你的3D打印工作流终极解决方案下一篇终极指南如何用Blender 3MF插件轻松实现3D打印工作流革命 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进