---license: Apache License 2.0language: - Chinesetasks: - ERNIE Large Models - Image-to-Texttraining_framework: ERNIEKitinference_framework: PaddleXbase_model: - PaddlePaddle/PaddleOCR-VLmodel_lineage: finetune---## PaddleOCR-VL 微调:Prompt 与信息抽取介绍本项目介绍了如何通过自定义 Prompt 对 PaddleOCR-VL 视觉-语言模型进行微调,使其能够执行结构化的文档信息抽取任务。## 模型描述### 模型基本信息PaddleOCR-VL 是一款专为文档理解设计的视觉-语言模型(Vision-Language Model, VLM),可以通过提示词(Prompt)完成多种文档理解任务,包括文本识别(OCR)、表格识别、公式识别和图表识别。本项目扩展了其应用场景,使其能够执行结构化信息抽取任务。### 模型结构与训练- **基础模型**:PaddleOCR-VL-0.9B- **微调方法**:使用 ERNIE 框架进行监督微调(SFT)- **核心创新**:通过自定义 Prompt 模板扩展模型功能,使其能够根据不同的字段需求输出结构化的 JSON 格式数据### 适用场景- 发票信息全量提取- 发票信息部分提取> 本模型仅针对 `部分增值税普通发票` 进行优化,对于其他类型文档的泛化能力需要进一步验证。## 期望模型使用方式以及适用范围### 核心功能微调后的 PaddleOCR-VL 模型支持两种主要使用方式:1. **完整信息提取**:输入 `OCR:{}` 提示词,模型输出文档中的全部结构化信息(JSON 格式)2. **特定字段提取**:通过指定字段名称,模型输出特定字段的值(JSON 格式)### 适用范围- 支持字符串字段:`OCR:{"字段名":""}`- 支持字典/对象字段:`OCR:{"字段名":{}}`- 支持列表字段:`OCR:{"字段名":[]}`### 模型推理使用微调后的模型进行推理,通过修改 `prompt` 参数来控制模型的输出内容。#### 完整信息提取进行完整信息提取,使用提示词 `OCR:{}`:```bashpython -m paddleocr doc_parser -i test.jpg \ --vl_rec_model_name "PaddleOCR-VL-0.9B" \ --vl_rec_model_dir "PaddleOCR-VL" \ --save_path="PaddleOCR-VL_response" \ --use_layout_detection=False \ --prompt_label="OCR:{}"```输出结果(JSON 格式):```json{ "发票信息": { "发票名称": "电子发票", "发票号码": "25332000321326443187", "开票日期": "2015年09月26日" }, "销售方信息": { "名称": "杭州酒店管理有限公司", "统一社会信用代码": "33234405MA2H2CCJ92" }, "项目名称": "规格型号", "单位": "个", "数量": "3"}```#### 特定字段提取 - 字符串值提取特定字段(字符串类型),使用提示词 `OCR:{"字段名":""}`:```bashpython -m paddleocr doc_parser -i test.jpg \ --vl_rec_model_name "PaddleOCR-VL-0.9B" \ --vl_rec_model_dir "PaddleOCR-VL" \ --save_path="PaddleOCR-VL_response" \ --use_layout_detection=False \ --prompt_label="OCR:{\"发票号码\": \"\"}"```输出结果:```json{ "发票号码": "25332000321326443187"}```### 微调使用如需基于自己的数据对模型进行微调,请参考- [PaddleOCR-VL-0.9B SFT](https://gitee.com/PaddlePaddle/ERNIE/blob/release/v1.4/docs/paddleocr_vl_sft_zh.md)- [微调 PaddleOCR-VL 新姿势 -- Prompt 与 信息抽取](https://aistudio.baidu.com/projectdetail/9857242)## 模型局限性以及可能的偏差### 已知限制1. **数据量限制**:当前微调使用的数据量较小,模型效果仍有改进空间2. **文档类型限制**:主要针对发票文档进行优化,对其他文档类型的泛化能力需要验证3. **信息完整性**:模型可能在复杂表格或多列布局的文档上表现不理想4. **语言限制**:目前主要支持中文文档### 可能的偏差1. **识别准确率**:模型的识别结果依赖于输入图像质量2. **字段格式**:对于非标准格式的字段值,模型可能无法正确解析3. **多页文档**:目前主要针对单页文档优化### 使用建议- 确保输入图像清晰且完整- 提示词模板应与训练数据格式一致- 对于新的文档类型,建议进行针对性微调- 生产环境使用前建议进行充分的验证测试## 数据评估及结果### 微调效果对比#### 微调前模型输出纯文本识别结果,缺乏结构化信息:```text购买方信息 | 名称 | 中青旅联科 | 杭州 | 公关顾问有限公司 | 销售方信息 | 名称 | 杭州酒店管理有限公司 | ...```#### 微调后模型输出结构化的 JSON 格式信息:```json{ "发票信息": { "发票名称": "电子发票", "发票号码": "25332000321326443187", "开票日期": "2015年09月26日" }, "销售方信息": { "名称": "杭州酒店管理有限公司", "统一社会信用代码": "33234405MA2H2CCJ92" }, "项目名称": "规格型号", "单位": "个", "数量": "3", "合计": { "金额": "1383.17", "税额": "13.83" }}```### 特定字段提取效果指定提取特定字段时的输出示例:**Prompt**: `OCR:{"发票号码": "", "开票日期": ""}`**输出**:```json{ "发票号码": "25332000321326443187", "开票日期": "2015年09月26日"}```## 相关资源### 参考资料- [PaddleOCR-VL-0.9B SFT](https://gitee.com/PaddlePaddle/ERNIE/blob/release/v1.4/docs/paddleocr_vl_sft_zh.md)- [微调 PaddleOCR-VL 新姿势 -- Prompt 与 信息抽取](https://aistudio.baidu.com/projectdetail/9857242)### 相关工具- ERNIE 框架:https://github.com/PaddlePaddle/ERNIE- PaddleOCR-VL 模型:https://github.com/PaddlePaddle/PaddleOCR