
人工智能大模型预训练微调LoRARLHF强化学习分布式训练【免费下载链接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.项目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP点击查看免费下载导读本文围绕 PaddleNLP 提供的 UIE Taskflow 文档信息抽取能力展开讲解如何在不训练、不标注的前提下通过自然语言定义抽取目标schema对报关单、证件、表格、送货单等图片与 PDF 文档完成实体抽取、关系抽取与多任务抽取。读完本文你将掌握 UIE-X 文档抽取的完整调用方式、输入格式约定、PP-Structure 版面分析技巧、结果可视化方法以及schema、ocr_lang、precision等核心参数的取值与底层原理。1. 功能简介一条 Taskflow 打通文本与文档的通用信息抽取PaddleNLP 的paddlenlp.Taskflow提供文本及文档的通用信息抽取、评价观点抽取等能力可抽取多种类型的信息包括但不限于命名实体识别NER人名、地名、机构名等关系抽取如电影的导演、歌曲的发行时间等事件抽取如某路口发生车祸、某地发生地震等评价维度、观点词、情感倾向等信息。其核心特色在于开放域open-domain与零训练用户只需用自然语言自定义抽取目标schema即可统一抽取输入文本或文档中的对应信息实现开箱即用。相关的完整应用总览可参考 信息抽取应用说明其中涵盖模型选型、性能对比、标注—训练—部署全流程等更多内容。对于纯文本场景的信息抽取uie-base等模型的用法可参考 文本信息抽取 Taskflow 指南本文聚焦其中的文档抽取分支即基于 UIE-X 模型的图片、表格与 PDF 信息抽取。2. 文档信息抽取实体、关系与多任务场景文档信息抽取Document Information Extraction以图片或 PDF 为输入底层由 OCR 解析版面文字后交给 UIE-X 模型完成结构化抽取。示例图片报关单、证件、表格等可自行准备代码示例中统一使用./cases/目录下的样例文件。2.1 实体抽取Named Entity Recognition, NER实体抽取是指识别文本中具有特定意义的实体。在开放域信息抽取中抽取类别没有限制用户可以完全自定义 schema。下面以报关单为例一次性抽取收发货人、进口口岸、进口日期、运输方式、征免性质、境内目的地、运输工具名称、包装种类、件数、合同协议号共 10 类实体 from pprint import pprint from paddlenlp import Taskflow schema [收发货人, 进口口岸, 进口日期, 运输方式, 征免性质, 境内目的地, 运输工具名称, 包装种类, 件数, 合同协议号] ie Taskflow(information_extraction, schemaschema, modeluie-x-base) pprint(ie({doc: ./cases/custom.jpeg})) [{件数: [{bbox: [[826, 1062, 926, 1121]], end: 312, probability: 0.9832498761402597, start: 308, text: 1142}], 包装种类: [{bbox: [[1214, 1066, 1310, 1121]], end: 314, probability: 0.9995648138860567, start: 312, text: 纸箱}], 合同协议号: [{bbox: [[151, 1077, 258, 1117]], end: 319, probability: 0.9984179437542124, start: 314, text: 33035}], 境内目的地: [{bbox: [[1966, 872, 2095, 923]], end: 275, probability: 0.9975541483111243, start: 272, text: 上海市}], 征免性质: [{bbox: [[1583, 770, 1756, 821]], end: 242, probability: 0.9950633161231508, start: 238, text: 一般征税}], 收发货人: [{bbox: [[321, 533, 841, 580]], end: 95, probability: 0.4772132061042136, start: 82, text: 上海新尚实国际贸易有限公司}, {bbox: [[306, 584, 516, 624]], end: 150, probability: 0.33807074572195006, start: 140, text: 31222609K9}], 运输工具名称: [{bbox: [[1306, 672, 1516, 712], [1549, 668, 1645, 712]], end: 190, probability: 0.6692050414718089, start: 174, text: E. R. TIANAN004E}], 运输方式: [{bbox: [[1070, 664, 1240, 715]], end: 174, probability: 0.9994416347044179, start: 170, text: 永路运输}], 进口口岸: [{bbox: [[1070, 566, 1346, 617]], end: 120, probability: 0.9945697196994345, start: 111, text: 洋山港区-2248}], 进口日期: [{bbox: [[1726, 569, 1933, 610]], end: 130, probability: 0.9804819494073627, start: 120, text: 2017-02-24}]}]从返回结果可以看到文档抽取的每个实体结果除text实体文本、start/end字符偏移区间与probability置信度外还额外带有bbox坐标框形如[x1, y1, x2, y2]的像素坐标用于定位实体在原始文档图片中的位置。这一字段由后处理阶段根据 OCR 版面信息与实体字符区间计算得出对应实现见 information_extraction.py 中的_add_bbox_info。需要注意的是收发货人这类实体在文档中可能出现多个结果公司名 编号返回结构会自动组织为列表。证件类文档同样适用例如对驾照进行英文抽取时需要同时指定 OCR 语言与 schema 语言为英文 from pprint import pprint from paddlenlp import Taskflow schema [Name, Date of birth, Issue date] ie Taskflow(information_extraction, schemaschema, modeluie-x-base, ocr_langen, schema_langen) pprint(ie({doc: ./cases/license.jpeg}))2.2 关系抽取Relation Extraction, RE关系抽取是指从文本中识别实体并抽取实体之间的语义关系进而获取三元组信息即主体谓语客体。在 Taskflow 中关系抽取通过schema 嵌套结构定义外层键为主体实体类别其值为该主体需要抽取的客体/关系实体类别列表。下面以表格为例抽取每个姓名对应的招聘单位与报考岗位 from pprint import pprint from paddlenlp import Taskflow schema {姓名: [招聘单位, 报考岗位]} ie Taskflow(information_extraction, schemaschema, modeluie-x-base) pprint(ie({doc: ./cases/table.png}))此时返回结果中每个姓名实体下会附带relations字段组织为{招聘单位: [...], 报考岗位: [...]}结构。2.3 跨任务使用实体 关系多任务抽取当需要同时对文档进行实体抽取与关系抽取时可以将 schema 构造为列表 嵌套字典混合的形式。以下是对送货单同时抽取单据级实体Total GBP、No.、Date、Customer No.、Subtotal without VAT以及 Description 下的子实体Quantity、Amount的 schema 结构schema [ Total GBP, No., Date, Customer No., Subtotal without VAT, { Description: [ Quantity, Amount ] } ]对应代码 from pprint import pprint from paddlenlp import Taskflow schema [Total GBP, No., Date, Customer No., Subtotal without VAT, {Description: [Quantity, Amount]}] ie Taskflow(information_extraction, schemaschema, modeluie-x-base, ocr_langen, schema_langen) pprint(ie({doc: ./cases/delivery_note.png}))从源码层面看这种多级 schema 会被递归构造成一棵SchemaTree见 information_extraction.py 中的_build_tree字符串元素作为叶子节点字典元素递归展开为父子关系。预测时_multi_stage_predict会先抽取父级实体再以父实体文本 的作为 prompt 前缀逐级抽取子级关系实现多阶段multi-stage级联预测最终把各级结果通过relations嵌套组织。2.4 输入说明图片路径、HTTP 链接、base64 与自定义 OCR文档抽取UIE-X支持多种输入形式图片路径本地文件路径HTTP 图片链接直接传入 URLbase64 输入图片内容的 base64 编码文档格式支持图片jpg/png 等与 PDF 两种格式。在输入字典中text表示文本输入doc表示文档输入。可同时传入多条输入组成的列表[ {text: 2月8日上午北京冬奥会自由式滑雪女子大跳台决赛中中国选手谷爱凌以188.25分获得金牌}, {doc: ./cases/custom.jpg}, {doc: https://user-images.githubusercontent.com/40840292/203457719-84a70241-607e-4bb1-ab4c-3d9beee9e254.jpeg} ]注意NOTE多页 PDF 输入目前只抽取第一页的结果UIE-X 更适合单证文档如票据、单据等的信息提取目前还不适合过长或多页的文档。这一限制在底层解析器中有明确体现DocParser.read_pdf只加载第一页并在日志中给出警告见 doc_parser.py 的read_pdf。使用自定义 OCR / layout 作为输入如果你有自己的 OCR 引擎可以不依赖内置 PaddleOCR而是直接把版面结果以layout字段传入。layout是(bbox, text)二元组列表bbox为[x1, y1, x2, y2]坐标layout [ ([68.0, 12.0, 167.0, 70.0], 名次), ([464.0, 13.0, 559.0, 67.0], 球员), ([833.0, 15.0, 1054.0, 64.0], 总出场时间), ...... ] ie({doc: doc_path, layout: layout})传入layout时底层会跳过内置 OCR 的版面解析do_ocrFalse仅复用外部提供的坐标与文本完成后续编码与抽取参见 information_extraction.py 的_check_input_text。同时需要说明UIE-X 的模型输入还会包含按字符对齐的bbox序列以及整页图片其输入规格input_spec包含bbox与image两个专有张量见 information_extraction.py 的_construct_input_spec因此在自定义 layout 场景下底层依然需要读取图片本身。2.5 使用技巧PP-Structure 版面分析与动态切换 schema使用 PP-Structure 版面分析功能OCR 识别出来的文字默认会按照左上到右下进行排序。对于分栏、表格内有多行文本等版面复杂的情况这种简单排序可能打乱阅读顺序、影响抽取效果。此时推荐开启版面分析功能layout_analysisTrue借助 PP-Structure 的版面分析能力识别段落、标题、表格等区域类型来优化文字排序、增强抽取效果 from pprint import pprint from paddlenlp import Taskflow schema 中标候选人名称 ie Taskflow(information_extraction, schemaschema, modeluie-x-base, layout_analysisTrue) pprint(ie({doc: https://gimg2.baidu.com/image_search/...}))开启后底层不再调用普通PaddleOCR而是初始化PPStructure(tableTrue, ocrTrue, langself.ocr_lang)作为版面分析引擎非表格区域按区域类型text、title 等组织文本表格区域则会解析出单元格级(bbox, text)从而保持表格的语义结构详见 doc_parser.py 的ocr与init_ocr_inference。值得强调的是该示例仅用于说明版面分析功能的使用场景实际生产环境一般仍需结合具体单据进行标注与微调才能达到理想效果。动态切换抽取目标set_schema同一文档可能需要抽取不同维度的信息。Taskflow 提供set_schema方法可以在不重新初始化模型的情况下动态更换抽取目标。例如先抽取中标候选人名称再切换到抽取医疗文档中的抗血小板药物的用药指征 schema 抗血小板药物的用药指征 ie.set_schema(schema) pprint(ie({doc: ./cases/drug.webp}))set_schema会重建 schema 树内部调用_build_tree因此切换后下一次调用即按新目标抽取无需重新加载模型权重适合在同一任务流程中灵活切换抽取维度的场景。2.6 结果可视化OCR 结果与抽取结果一键出图Taskflow 提供两种可视化能力均通过paddlenlp.utils.doc_parser.DocParser实现源码见 doc_parser.py可以将版面框与抽取结果直接绘制到原图上。OCR 识别结果可视化 from paddlenlp.utils.doc_parser import DocParser doc_parser DocParser(ocr_langen) doc_path ./cases/business_card.png parsed_doc doc_parser.parse({doc: doc_path}) doc_parser.write_image_with_results( doc_path, layoutparsed_doc[layout], save_pathocr_result.png)doc_parser.parse返回的layout中包含每个文本块的位置框write_image_with_results会将这些框以半透明色块叠加到原图上并保存为ocr_result.png。抽取结果可视化 from pprint import pprint from paddlenlp import Taskflow from paddlenlp.utils.doc_parser import DocParser doc_path ./cases/business_card.png schema [人名, 职位, 号码, 邮箱地址, 网址, 地址, 邮编] ie Taskflow(information_extraction, schemaschema, modeluie-x-base, ocr_langen) results ie({doc: doc_path}) DocParser.write_image_with_results( doc_path, resultresults[0], save_pathimage_show.png)将抽取结果含bbox与嵌套relations直接绘制到原图每个实体类别会用不同颜色标注其坐标框若实体存在子级关系还会绘制连接线把父实体与其关系实体关联起来形成直观的抽取全景图。write_image_with_results内部会把多级relations展平后逐框绘制见 doc_parser.py 的write_image_with_results并支持return_imageTrue、max_size等比缩放等扩展用法。2.7 更多配置核心参数详解下面是一次完整的关键字参数配置示例 from paddlenlp import Taskflow ie Taskflow(information_extraction, schema, schema_langch, ocr_langch, batch_size16, modeluie-x-base, layout_analysisFalse, position_prob0.5, precisionfp32)各参数含义如下参数含义默认值取值与说明schema定义任务抽取目标空可参考开箱即用中不同任务的调用示例进行配置为空时运行会提示先通过set_schema()设置schema_langschema 的语言ch可选ch和en。中英文 schema 的构造方式不同因此需要显式指定 schema 语言ocr_langPaddleOCR 的语言chch可在中英混合的图片中使用en在英文图片上效果更好batch_size批处理大小16请结合机器显存/内存情况调整model任务使用的模型uie-base可选uie-base、uie-medium、uie-mini、uie-micro、uie-nano、uie-medical-base、uie-base-en、uie-x-baselayout_analysis是否使用 PP-Structure 对文档进行版面分析False开启后优化布局信息排序适合分栏、复杂表格场景position_probspan 起始/终止位置的结果概率阈值0.5概率取值在 0~1 之间返回结果会去掉低于该阈值的结果span 的最终概率输出为起始位置概率与终止位置概率的乘积precision模型精度fp32可选fp16与fp32model参数补充说明除文档列出的模型外从 UIETask 的资源注册表 可以看到仓库还内置了uie-m-base、uie-m-large中英双语文本抽取以及uie-tinyuie-medium的旧名称未来将废弃。文档抽取场景使用uie-x-baseuie-base系列默认用于纯文本场景。position_prob的底层机制模型会对每个 token 输出两个概率——作为 span 起始位置的概率与作为终止位置的概率。后处理时先通过get_bool_ids_greater_than(..., limitself._position_prob)过滤低于阈值的起止位置再用get_span组合出完整 span并以起始概率 × 终止概率作为该 span 的最终置信度见 information_extraction.py 的_single_stage_predict。因此当你希望召回更全的结果时可适当调低该阈值反之希望结果更精时调高阈值。precisionfp16的硬件要求fp16推理速度更快支持 GPU 和 NPU 硬件环境。若选择fp16且运行在 GPU 上需确保机器正确安装 NVIDIA 相关驱动和基础软件CUDA 11.2cuDNN 8.1.1首次使用需按照提示安装相关依赖需确保 GPU 设备的 CUDA Compute Capability计算能力大于 7.0典型设备包括 V100、T4、A10、A100、GTX 20 系列和 30 系列显卡等关于 CUDA Compute Capability 与精度支持的详细对照关系可查阅 NVIDIA 官方文档中的 GPU 硬件与支持精度对照表。此外从 UIETask 的构造函数 可以看到Taskflow 还支持若干文档未逐一展开的进阶参数例如max_seq_len最大序列长度默认 512、split_sentence超长文本切句、dynamic_max_length按 batch 内样本动态选择序列长度、use_fast快速分词器以及num_workersDataLoader 进程数可按需组合使用。3. 从源码看 UIE-X 文档抽取的完整链路结合 information_extraction.py 与 doc_parser.py一条文档输入在底层大致经过以下阶段文档解析DocParser.parse根据 MIME 类型区分图片与 PDF图片经read_image读取自动做 EXIF 方向校正PDF 经read_pdf用 PyMuPDFfitz渲染首页并放大 10 倍保证清晰度随后按需将图片扩展为 A4 比例expand_image_to_a4_size使尺寸各异的单据保持统一版面OCR / 版面分析未开启layout_analysis时调用PaddleOCR(langocr_lang)识别文本与坐标框开启后改用PPStructure输出分区域含表格单元格级的版面结果模型输入编码UIE-X 需要把 prompt 与文档字符序列、逐字符 bbox、整页图片共同编码为input_ids / token_type_ids / position_ids / attention_mask / bbox / image六类张量见_construct_input_spec与doc_reader多阶段级联预测_multi_stage_predict沿 schema 树逐节点预测父级实体结果作为子级关系抽取的 prompt 前缀中文为父实体 的英文为 of 父实体见 information_extraction.py 的_multi_stage_predict坐标回填_add_bbox_info根据布局把抽取到的字符区间换算成像素坐标框得到最终含bbox的结果结构。该能力在仓库中亦有配套测试覆盖UIE-X 模型本身的构造与推理在 tests/transformers/ernie_layout/test_modeling.py 中有对应验证。4. 进阶路径文档抽取能力的开箱即用适合快速验证Research 阶段当需要把效果推向生产时仓库还提供了完整的进阶方案数据标注基于 Label Studio 的文档信息抽取标注方案实现从标注到训练数据的无缝衔接见 文档标注指南微调与部署文档抽取全流程含微调脚本finetune.py、评估脚本evaluate.py与 HTTP 部署见 document 目录说明依赖组件方面文档解析依赖 PaddleOCR 与 PP-Structure 的 OCR / 版面分析能力PDF 解析依赖 PyMuPDF均需在环境中预先安装。参考资料PaddleNLP 信息抽取应用总览模型选型与性能文本信息抽取 Taskflow 使用指南文档信息抽取全流程示例信息抽取 Taskflow 核心实现源码DocParser 文档解析器源码UIE-X 模型测试用例PaddleOCR / PP-Structure 版面分析工具赞分享人工智能大模型预训练微调LoRARLHF强化学习分布式训练【免费下载链接】PaddleNLPEasy-to-use and powerful LLM and SLM library with awesome model zoo.项目地址https://gitcode.com/gh_mirrors/pa/PaddleNLP点击查看免费下载相关推荐PaddleNLP UIE Taskflow 文档信息抽取实战用 UIE-X 实现开箱即用的多模态信息抽取PaddleNLP UIE Taskflow 文档信息抽取实战用 UIE X 实现开箱即用的多模态信息抽取 本文是 PaddleNLP 信息抽取应用中 文档信人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLPTimesFM 2.5架构深度解析时间序列基础模型的设计原理与性能优化TimesFM 2.5架构深度解析时间序列基础模型的设计原理与性能优化 TimesFMTime Series Foundation Model是Googl人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLPPaddleNLP 文档信息抽取实战指南基于 UIE-X 的标注、微调、评估与推理全流程PaddleNLP 文档信息抽取实战指南基于 UIE X 的标注、微调、评估与推理全流程 本文围绕 PaddleNLP 开源仓库 slm/applicatio人工智能大模型预训练微调LoRARLHF强化学习分布式训练模型推理服务推理引擎模型量化模型压缩本地部署NLP上一篇从入门到精通linear-merge-openmind 模型架构与核心参数详解下一篇Switch Transformers Base-32最佳实践避免常见错误与性能调优创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考