安装和使用docling

安装和使用docling

1 介绍

‌Docling是一个功能强大的文档解析和转换工具,能够将PDF, DOCX, PPTX, XLSX, Images, HTML, AsciiDoc 和Markdown文档转换为HTML、Markdown 和JSON格式。Docling不支持将公式转为Markdown格式。支持OCR(EasyOCR、Tesseract等),安装配置简单。

Docling与MinerU、Marker的功能相似,其中MinerU支持PDF(支持较好)转Markdown、JSON、HTML、Office,支持将公式转为Markdown格式。支持OCR(PaddleOCR),安装配置相对Docling复杂一些。

MarkItDown是微软开源的将Office的文件转化为markdown的项目,支持Office、音频、PDF、OCR等,不过PDF和OCR的支持不太好。

Docling参考地址

# Docling的Github地址
https://github.com/DS4SD/docling
# Docling官网网址
https://ds4sd.github.io/docling/


# EasyOCR的GitHub地址
https://github.com/JaidedAI/EasyOCR
# 模型下载地址
https://www.jaided.ai/easyocr/modelhub/
# EasyOCR官网
https://www.jaided.ai/

MinerU

# Github地址
https://github.com/opendatalab/MinerU

MarkItDown

# Github地址
https://github.com/microsoft/markitdown

2 安装Docling

⚠️ 如果代码执行有问题,请更换软件版本

# 安装docling
pip install docling

# 安装OCR工具
pip install easyocr

3 代码

3.1 EasyOCR简单使用

import easyocr
ocr_model_path = "E:/model/ocr/EasyOCR/model"
reader = easyocr.Reader(
    # 设置识别图片中语言的模型
    lang_list=['ch_sim', 'en'],
    # 注意会自动下载模型到路径下,可以不指定模型目录,会自动下载到C盘下
    # 包括三个模型
    # 文本检测模型:CRAFT -- craft_mlt_25k.pth
    # 中文简体模型:ch_sim -- zh_sim_g2.pth
    # 英文模型:en -- latin_g2.pth
    model_storage_directory=ocr_model_path
)
result = reader.readtext("E:/test/test.png")
print(result)

3.2 Docling简单使用

官网代码

官网代码会自动将Docling和OCR模型下载到C盘中,由于国内HuggingFace不能直接访问,因此下载Docling会失败,无法执行代码。

from docling.document_converter import DocumentConverter

source = "https://arxiv.org/pdf/2408.09869"  # document per local path or URL
converter = DocumentConverter()
result = converter.convert(source)
print(result.document.export_to_markdown())  # output: "## Docling Technical Report[...]"

自定义模型路径

在modelscop上查找“docling-models”,并下载下来;或者在HuggingFace上查找,并下载“ds4sd/docling-models”。

from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import PdfPipelineOptions, EasyOcrOptions
from docling.document_converter import PdfFormatOption, DocumentConverter

# 参考接口地址
# https://ds4sd.github.io/docling/v2/#access-document-structures

# 配置OCR模型,设置EasyOCR模型的路径
easyocr_model_storage_directory = "E:/model/ocr/EasyOCR/model"
easyocr_options = EasyOcrOptions()
easyocr_options.model_storage_directory = easyocr_model_storage_directory

# 配置pdf模型,设置Docling模型的路径
pdf_artifacts_path = "E:/model/docling-models"
pdf_pipeline_options = PdfPipelineOptions(artifacts_path=pdf_artifacts_path)
pdf_pipeline_options.ocr_options = easyocr_options

# 转换模型
converter = DocumentConverter(
    format_options={
        InputFormat.PDF: PdfFormatOption(pipeline_options=pdf_pipeline_options),
        InputFormat.IMAGE: ImageFormatOption(pipeline_options=pdf_pipeline_options),
        InputFormat.PPTX: PowerpointFormatOption(pipeline_options=pdf_pipeline_options),
        InputFormat.DOCX: WordFormatOption(pipeline_options=pdf_pipeline_options),
        InputFormat.XLSX: ExcelFormatOption(pipeline_options=pdf_pipeline_options),
        InputFormat.HTML: HTMLFormatOption(pipeline_options=pdf_pipeline_options)
    }
)

source = "E:/test/test.pdf"
result = converter.convert(source)
print(result.document.export_to_markdown())


3.3 新版本离线安装

参考地址

https://ds4sd.github.io/docling/usage/

3.3.1 下载模型

⚠️ 注意:OCR模型默认下载的只用英文不支持中文,中文需要下载相应的模型并指定语言。

# 整理的模型,下载后可直接使用
https://github.com/MasonYyp/docling-models

命令下载模型

# 命令下载,注意默认下载到用户目录下
docling-tools models download

代码下载模型

from pathlib import Path
from docling.utils import model_downloader

# 指定下载目录
output_dir = Path("E:/docling-models")
test = model_downloader.download_models(
    output_dir=output_dir
)
print(test)

3.3.2 Python代码

import pathlib

from docling.datamodel.base_models import InputFormat
from docling.datamodel.pipeline_options import PdfPipelineOptions, EasyOcrOptions
from docling.document_converter import DocumentConverter, PdfFormatOption

# 指定模型路径
artifacts_path = "E:/docling-models"

# 指定OCR模型
easyocr_options = EasyOcrOptions()
# 支持中文和英文,注意必须下载中文简体的支持(zh_sim_g2.pth)
# 可以不设置,默认语言:["fr", "de", "es", "en"]
easyocr_options.lang = ['ch_sim','en']

pipeline_options = PdfPipelineOptions(artifacts_path=artifacts_path)
# 设置支持OCR
pipeline_options.do_ocr = True
# 设置支持表结构
pipeline_options.do_table_structure = True

# 指定OCR模型,可以不设置
pipeline_options.ocr_options = easyocr_options

converter = DocumentConverter(
    format_options={
        InputFormat.PDF: PdfFormatOption(pipeline_options=pipeline_options)
    }
)

source = "E:/test/test-5-2.pdf"
result = converter.convert(source)
md_text= result.document.export_to_markdown()

# 存储markdown
pathlib.Path("E:/test/test-5-2.md").write_bytes(md_text.encode())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值