跨模态通用文档信息抽取任务简介
更新时间:2022-07-05
跨模态通用文档信息抽取任务简介
- 跨模态通用文档信息抽取任务融合文本、图像、布局等信息进行联合建模,常用的场景包括:针对带布局数据(文档、图片等)的信息抽取等任务。
ERNIE预训练模型选择
文心提供的ERNIE预训练模型的参数文件和配置文件在 wenxin_appzoo/wenxin_appzoo/models_hub目录下,使用对应的sh脚本,即可拉取对应的模型、字典、必要环境等文件。目前支持跨模态检索任务的预训练模型为:
| 模型名称 | 下载脚本 | 备注 |
|---|---|---|
| ERNIE-Layout | sh download_ernie_layout_1.0_base_ch.sh | 参数、字典与ernie的配置文件存放于ernie_layout_1.0_base_ch_dir目录 |
快速开始
cd sequence_labeling代码结构
sequence_labeling
├── data # 示例数据目录
│ └── download_ernie_layout_data.sh
├── data_set_reader
│ └── ernie_layout_seqlabel_dataset_reader.py
├── examples # 配置文件目录
│ ├── seqlab_ernie_layout_ch_infer.json
│ └── seqlab_ernie_layout_ch.json
├── inference # 推理相关代码
│ ├── custom_ernie_layout_inference.py
│ ├── custom_inference.py
│ └── __init__.py
├── model # 模型文件目录
│ ├── ernie_layout_sequence_label.py
│ └── __init__.py
├── run_infer.py # 预测入口文件
├── run_trainer.py # 训练入口文件
└── trainer
├── custom_dynamic_trainer.py
├── custom_trainer_ernie3.py
├── custom_trainer.py
└── __init__.py数据准备
-
跨模态通用文档信息抽取任务示例数据可由./data目录下对应的脚本进行下载:
cd ./data sh download_ernie_layout_data.sh -
输入数据为json格式文件,数据解析如下:
{ "id": 数据id, "tokens": OCR识别返回的词列表, "bboxes": OCR识别返回的token box位置,包括左上和右下坐标,由四个数字组成,bboxes长度需要与tokens一致, "segment_bboxes": OCR识别返回的segment box位置,比token box粒度更大,包括左上、右下坐标,由四个数字组成,长度需要与tokens一致,bboxes和segmetn_bboxes二者有一个就可以,可以通过use_segment_box选项来控制使用哪个, "segment_ids": 每个token属于哪一个segment,是一个数字,长度需要与tokens一致,可选,通过use_segments控制, "labels": 每个token的label,长度需要与tokens一致,若label可以是字符串,如O、B-ANSWER、I-ANSWER等,需配置label_vocab来解析label,也可直接为id。 "image": 文档图像经过base64编码之后的字符串, "w": 图像的宽, "h": 图像的高 }-
图像base64编码示例代码:
import cv2 import numpy as np import base64 def image_file_to_str(filename): img = cv2.imread(filename) img_encode = cv2.imencode(".jpg", img)[1] data_encode = np.array(img_encode) str_encode = data_encode.tostring() return base64.b64encode(str_encode)
-
开始训练
进入指定任务的目录,跨模型检索任务的目录为wenxin_appzoo/wenxin_appzoo/tasks/sequence_labeling, 运行
python run_trainer.py --param_path ./examples/seqlab_ernie_layout_ch.json- 通过上述脚本调用json文件开启训练。
- 训练运行的日志会自动保存在./log/test.log文件中。
- 训练模型保存于./output/seqlab_ernie_layout_1.0_base_fc_ch文件夹下。
开始预测
使用run_infer.py入口脚本,传入预测配置文件(./examples/seqlab_ernie_layout_ch_infer.json)进行预测:
python run_infer.py --param_path ./examples/seqlab_ernie_layout_ch_infer.json预测运行的日志会自动保存在./output/predict_reuslt.txt文件中,预测结果的格式为:预测标签列表'\t'token列表'\t'数据id
