该项目主要是汇集全网开源的版面分析的项目,具体来说,就是分析给定的文档类别图像(论文截图、研报等),定位其中类别和位置,如标题、段落、表格和图片等各个部分。
Warning
由于不同场景下的版面差异较大,现阶段不存在一个模型可以搞定所有场景。如果实际业务需要,以下模型效果不好的话,建议构建自己的训练集微调。
目前支持已经支持的版面分析模型如下:
model_type |
版面类型 | 支持类别 |
---|---|---|
pp_layout_table |
表格 | ["table"] |
pp_layout_publaynet |
英文 | ["text", "title", "list", "table", "figure"] |
pp_layout_cdla |
中文 | ['text', 'title', 'figure', 'figure_caption', 'table', 'table_caption', 'header', 'footer', 'reference', 'equation'] |
yolov8n_layout_paper |
论文 | ['Text', 'Title', 'Header', 'Footer', 'Figure', 'Table', 'Toc', 'Figure caption', 'Table caption'] |
yolov8n_layout_report |
研报 | ['Text', 'Title', 'Header', 'Footer', 'Figure', 'Table', 'Toc', 'Figure caption', 'Table caption'] |
yolov8n_layout_publaynet |
英文 | ["Text", "Title", "List", "Table", "Figure"] |
yolov8n_layout_general6 |
通用 | ["Text", "Title", "Figure", "Table", "Caption", "Equation"] |
🔥doclayout_docstructbench |
通用 | ['title', 'plain text', 'abandon', 'figure', 'figure_caption', 'table', 'table_caption', 'table_footnote', 'isolate_formula', 'formula_caption'] |
🔥doclayout_d4la |
通用 | ['DocTitle', 'ParaTitle', 'ParaText', 'ListText', 'RegionTitle', 'Date', 'LetterHead', 'LetterDear', 'LetterSign', 'Question', 'OtherText', 'RegionKV', 'RegionList', 'Abstract', 'Author', 'TableName', 'Table', 'Figure', 'FigureName', 'Equation', 'Reference', 'Footer', 'PageHeader', 'PageFooter', 'Number', 'Catalog', 'PageNumber'] |
🔥doclayout_docsynth |
通用 | ['Caption', 'Footnote', 'Formula', 'List-item', 'Page-footer', 'Page-header', 'Picture', 'Section-header', 'Table', 'Text', 'Title'] |
PP模型来源:PaddleOCR 版面分析
yolov8n系列来源:360LayoutAnalysis
(推荐使用)🔥doclayout_yolo模型来源:DocLayout-YOLO,该模型是目前最为优秀的开源模型,挑选了3个基于不同训练集训练得到的模型。其中doclayout_docstructbench
来自link,doclayout_d4la
来自link,doclayout_docsynth
来自link。
上述模型下载地址为:link
由于模型较小,预先将中文版面分析模型(layout_cdla.onnx
)打包进了whl包内,如果做中文版面分析,可直接安装使用
pip install rapid-layout onnxruntime
from rapid_layout import EngineType, ModelType, RapidLayout, RapidLayoutInput
cfg = RapidLayoutInput()
layout_engine = RapidLayout(cfg=cfg)
img_path = "https://raw.githubusercontent.com/RapidAI/RapidLayout/718b60e927ab893c2fad67c98f753b2105a6f421/tests/test_files/layout.jpg"
results = layout_engine(img_path)
print(results)
results.vis("layout_res.png")
rapid_layout test_images/layout.png
- 因为版面分析模型输入图像尺寸固定,故可使用
onnxruntime-gpu
来提速。 - 因为
rapid_layout
库默认依赖是CPU版onnxruntime
,如果想要使用GPU推理,需要手动安装onnxruntime-gpu
。 - 详细使用和评测可参见AI Studio
pip install rapid_layout
pip uninstall onnxruntime
# 这里一定要确定onnxruntime-gpu与GPU对应
# 可参见https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html#requirements
pip install onnxruntime-gpu
from rapid_layout import EngineType, ModelType, RapidLayout, RapidLayoutInput
cfg = RapidLayoutInput(
model_type=ModelType.PP_LAYOUT_CDLA,
engine_type=EngineType.ONNXRUNTIME,
engine_cfg={"use_cuda": True, "cuda_ep_cfg.gpu_id": 1},
)
layout_engine = RapidLayout(cfg=cfg)
img_path = "https://raw.githubusercontent.com/RapidAI/RapidLayout/718b60e927ab893c2fad67c98f753b2105a6f421/tests/test_files/layout.jpg"
results = layout_engine(img_path)
print(results)
results.vis("layout_res.png")
详细配置参数参见:link
from rapid_layout import EngineType, ModelType, RapidLayout, RapidLayoutInput
cfg = RapidLayoutInput(
model_type=ModelType.PP_LAYOUT_CDLA,
engine_type=EngineType.ONNXRUNTIME,
engine_cfg={"use_cann": True, "cann_ep_cfg.gpu_id": 0},
)
layout_engine = RapidLayout(cfg=cfg)
img_path = "https://raw.githubusercontent.com/RapidAI/RapidLayout/718b60e927ab893c2fad67c98f753b2105a6f421/tests/test_files/layout.jpg"
results = layout_engine(img_path)
print(results)
results.vis("layout_res.png")