文档内容提取项目#

简介#

文档内容提取是利用布局检测,公式检测,公式识别,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文件。