链载Ai

标题: 扫描PDF转换太痛苦?pdf-craft秒转Markdown/EPUB,自动生成目录注释、引文对齐 [打印本页]

作者: 链载Ai    时间: 10 小时前
标题: 扫描PDF转换太痛苦?pdf-craft秒转Markdown/EPUB,自动生成目录注释、引文对齐

本公众号主要关注NLP、CV、LLM、RAG、Agent等AI前沿技术,免费分享业界实战案例与课程,助力您全面拥抱AIGC。


PDF-Craft实战

from pdf_craft import PDFPageExtractor, MarkDownWriter

extractor = PDFPageExtractor(
device="cpu",# If you want to use CUDA, please change to device="cuda:0" format.
model_dir_path="/path/to/model/dir/path",# The folder address where the AI model is downloaded and installed
)
with MarkDownWriter(markdown_path,"images","utf-8") as md:
forblockinextractor.extract(pdf="/path/to/pdf/file"):
md.write(block)

如果原始 PDF 中有插图(或表格、公式),则会在与保存图像相同的级别创建一个目录。

目录中的图片将在 MarkDown 文件中以相对地址的形式被引用。*.md``assets``*.md``assets

extractor = PDFPageExtractor(
device="cpu",# If you want to use CUDA, please change to device="cuda:0" format.
model_dir_path="/path/to/model/dir/path",# The folder address where the AI model is downloaded and installed
)

将抽取的内容送给LLM,生成EPUB文件

from pdf_craft import analyse
from pdf_craft import LLM

llm = LLM(
key="sk-XXXXX",# LLM 供应商提供的 key
url="https://api.DeepSeek.com",# LLM 供应商提供的 URL
model="deepseek-chat",# LLM 供应商提供的模型
token_encoding="o200k_base",# 进行 tokens 估算的本地模型名(与 LLM 无关,若不关心就保留 "o200k_base")
)

analyse(
llm=llm,# 上一步准备好的 LLM 配置
pdf_page_extractor=pdf_page_extractor,# 上一部准备好的 PDFPageExtractor 对象
pdf_path="/path/to/pdf/file",# PDF 文件路径
analysing_dir_path="/path/to/analysing/dir",# analysing 文件夹地址
output_dir_path="/path/to/output/files",# 分析结果将写入这个文件夹
)

pdf-craft主要功能:

pdf-craft的转化逻辑

首先,将PDF分页拆解成图片

其次,利用DocLayout-YOLO识别图片中的block元素,包括:页眉、页脚、段落、标题、图片、表格、图表、页码等信息

然后,利用layoutreader对block进行排序

接着,利用OnnxOCR,识别block中的文字

最后,将OCR识别的文字,输送给Deepseek,并通过特定信息(比如目录等)来构建书本的结构,最终生成带目录,分章节的 EPUB 文件。

这个解析和构建的过程中,会通过 LLM 读取每页的注释和引用信息,然后在 EPUB 文件中以新的格式呈现。






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5