文档内容提取项目#
简介#
文档内容提取是利用布局检测,公式检测,公式识别,OCR等模型,提取文档中的信息,并转换为markdown文本。
项目使用#
在配置好环境的情况下,直接执行 project/pdf2markdown/scripts/run_project.py 即可运行文档内容提取项目。
$ python project/pdf2markdown/scripts/run_project.py --config project/pdf2markdown/configs/pdf2markdown.yaml
项目配置#
inputs: assets/demo/formula_detection
outputs: outputs/pdf2markdown
visualize: True
merge2markdown: True
tasks:
layout_detection:
model: layout_detection_yolo
model_config:
img_size: 1024
conf_thres: 0.25
iou_thres: 0.45
model_path: models/Layout/YOLO/doclayout_yolo_ft.pt
formula_detection:
model: formula_detection_yolo
model_config:
img_size: 1280
conf_thres: 0.25
iou_thres: 0.45
batch_size: 1
model_path: models/MFD/YOLO/yolo_v8_ft.pt
formula_recognition:
model: formula_recognition_unimernet
model_config:
batch_size: 128
cfg_path: pdf_extract_kit/configs/unimernet.yaml
model_path: models/MFR/unimernet_tiny
ocr:
model: ocr_ppocr
model_config:
lang: ch
show_log: True
det_model_dir: models/OCR/PaddleOCR/det/ch_PP-OCRv4_det
rec_model_dir: models/OCR/PaddleOCR/rec/ch_PP-OCRv4_rec
det_db_box_thresh: 0.3
inputs/outputs: 分别定义输入文件路径和输出路径
visualize: 是否对模型结果进行可视化,可视化结果会保存在outputs目录下。
merge2markdown: 是否将结果合并为markdown文档,这里只支持简单的单栏文本从上往下进行拼接,更复杂布局文档的markdown转换请参考 MinerU
tasks: 定义任务类型,PDF文档提取包含了布局检测、公式检测、公式识别、OCR等任务
具体每个任务和模型的参数含义请参考各任务的教程文档
多样化输入支持#
PDF文档内容提取支持 单个图像/PDF文件 、 包含图像/PDF文件的目录 等输入形式。
输出结果#
PDF文档提取的结果以json形式保存在 outputs 路径下,json的格式如下所示:
[
{
"layout_dets": [
{
"category_type": "text",
"poly": [
380.6792698635707,
159.85058512958923,
765.1419999999998,
159.85058512958923,
765.1419999999998,
192.51073013642917,
380.6792698635707,
192.51073013642917
],
"text": "this is an example text",
"score": 0.97
},
...
],
"page_info": {
"page_no": 0,
"height": 2339,
"width": 1654,
}
},
...
]
layout_dets: 单页PDF或图片的内容提取结果
category_type: 单个内容块的所属内别,比如标题、图片、行内公式等等
poly: 单个内容块的位置坐标
text: 该文本块的文本内容
score: 检测的置信度
page_info: 页面信息,包含页码和页面尺寸
page_no: 页码,从0开始计数
height: 页面尺寸: 高
width: 页面尺寸: 宽
如果 merge2markdown 参数为True的话,则会额外保存一个markdown文件。