基于LayoutLMv3的LayoutReader使用教程
1. 项目介绍
LayoutReader 是一个基于 LayoutLMv3 的开源项目,旨在对文档中的文字块进行排序,以识别阅读顺序。LayoutLMv3 是一种结合了布局信息的预训练语言模型,它能够理解文档中的文字与布局之间的关系。LayoutReader 项目对原始的 LayoutReader 进行了优化,提高了速度并使其支持多语言。
2. 项目快速启动
环境准备
在开始之前,请确保您的环境中已安装以下依赖:
- Python 3.6 或更高版本
- pip
- transformers
您可以使用以下命令安装所需的 Python 包:
pip install transformers
克隆项目
从 GitHub 上克隆 LayoutReader 项目:
git clone https://github.com/ppaanngggg/layoutreader.git
cd layoutreader
准备数据集
您需要将原始数据集转换为 span-level 数据集。首先下载原始数据集,然后运行以下脚本:
unzip ReadingBank.zip
python tools.py ./train/ train.jsonl.gz
python tools.py ./dev/ dev.jsonl.gz
python tools.py ./test/ test.jsonl.gz --src-shuffle-rate=0
python tools.py ./test/ test_shuf.jsonl.gz --src-shuffle-rate=1
模型训练
运行以下命令开始训练:
bash train.sh
模型评估
训练完成后,您可以使用以下命令对模型进行评估:
python eval.py ../test.jsonl.gz hantian/layoutreader
python eval.py ../test_shuf.jsonl.gz hantian/layoutreader
使用模型
您可以通过以下代码使用训练好的模型:
from transformers import LayoutLMv3ForTokenClassification
from v3.helpers import prepare_inputs, boxes2inputs, parse_logits
# 加载预训练模型
model = LayoutLMv3ForTokenClassification.from_pretrained("hantian/layoutreader")
# 定义文本框坐标
boxes = [[...], ...]
# 准备输入
inputs = boxes2inputs(boxes)
inputs = prepare_inputs(inputs, model)
# 获取预测结果
logits = model(**inputs).logits.cpu().squeeze(0)
orders = parse_logits(logits, len(boxes))
print(orders) # [0, 1, 2, ...]
或者直接运行 main.py
脚本来服务模型:
python main.py
3. 应用案例和最佳实践
- 案例一:在文档分析系统中集成 LayoutReader,以自动识别文档的阅读顺序。
- 最佳实践:在多语言环境下,使用 LayoutReader 的多语言功能来处理不同语言的文档。
4. 典型生态项目
- 项目一:利用 LayoutReader 进行文档排序的自动化工具。
- 项目二:集成 LayoutReader 的移动应用,用于现场文档的快速阅读顺序识别。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考