❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 丰富的 AI 工具库 -> 每日更新 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦
📚 「别让扫描PDF毁青春!开源AI把文献转换变成填空题」
大家好,我是蚝油菜花。这些学术民工の至暗时刻你是否熟悉------
- 👉 下载的扫描PDF转Word后,页脚编码把参考文献切成俄罗斯方块
- 👉 整理古籍电子版时,跨页诗句被强行拆成「床前明月光,疑是地上霜」两段
- 👉 导师给的纸质书扫描件,转EPUB后目录层级比迷宫还复杂...
今天要解救文献狗的 pdf-craft ,正在重写PDF转换规则!这把AI手术刀:
- ✅ 「智能去杂质」:页眉/脚注/水印自动过滤,比人眼识别还精准
- ✅ 跨页粘合术:YOLO算法识别文本流,杜绝「段落腰斩」惨案
- ✅ 电子书生成器:LLM自动构建目录树,引文标注比原书更清晰
已有研究生用它1小时处理完300页古籍,出版社靠它批量转制EPUB------你的文献处理流水线,是时候注射「AI格式强心剂」了!
🚀 快速阅读
pdf-craft是一款专注于处理扫描书籍的PDF转换工具。
- 核心功能:支持PDF转Markdown/EPUB格式,自动过滤页眉页脚,保持跨页内容连贯性
- 技术原理:结合DocLayout-YOLO布局分析和PaddleOCR文本识别,通过layoutreader优化阅读顺序
pdf-craft 是什么
pdf-craft 是一款开源的PDF格式转换工具,专注于处理扫描书籍类PDF文件。它能智能提取正文内容,自动过滤页眉、页脚、脚注等干扰元素,输出结构清晰的Markdown或EPUB格式文件。
该工具特别解决了扫描文档转换中的两大痛点:跨页内容断裂和版式混乱问题。通过AI算法自动判断文本逻辑关系,确保生成的文档语义连贯,大幅提升扫描资料的数字化效率。
pdf-craft 的主要功能
- PDF 转 Markdown:精准提取正文内容并保留原文档结构,将插图、表格和公式以截图形式嵌入,生成可直接编辑的Markdown文件
- PDF 转 EPUB:通过大语言模型智能构建书籍目录结构,自动整理注释和引文,输出适配电子书阅读器的标准EPUB格式
pdf-craft 的技术原理
- 页面布局分析:基于DocLayout-YOLO算法识别文本块、图片等元素的位置边界,通过自定义算法优化布局解析精度
- 文本识别:采用PaddleOCR高性能OCR引擎,准确识别扫描文档中的文字内容
- 跨页处理:通过算法自动判断文本块间的逻辑关联,确保跨页内容的自然衔接
- 阅读顺序优化:利用layoutreader确定符合人类阅读习惯的文本块顺序
如何运行 pdf-craft
下面将详细介绍如何安装 pdf-craft,以及如何使用其主要功能(如将 PDF 转换为 Markdown 和 EPUB 格式)。
介绍
- 本地运行:对于小规模的论文或书籍,可以完全在本地完成 PDF 转 Markdown 的转换。
- 接入 LLM :对于超过 100 页的书籍,推荐使用 LLM(如
DeepSeek
)生成带有目录和章节的 EPUB 文件。
安装
需要 Python 3.10 或更高版本(推荐 3.10.16)。
shell
pip install pdf-craft
使用 CUDA 加速
如果需要使用 GPU 加速,请确保设备已准备好 CUDA 环境。可以参考PyTorch
的安装指南,根据操作系统选择合适的命令。
- PyTorch 安装指南 :pytorch.org/get-started...
功能示例
将 PDF 转换为 Markdown
此操作无需调用远程 LLM,完全依赖本地计算资源(CPU 或 GPU)。首次调用时,模型会自动从网络下载。
python
from pdf_craft import PDFPageExtractor, MarkDownWriter
# 创建 PDF 提取器对象
extractor = PDFPageExtractor(
device="cpu", # 如果使用 GPU,请改为 device="cuda:0"
model_dir_path="/path/to/model/dir/path" # 模型下载和存储路径
)
# 创建 Markdown 写入器对象
with MarkDownWriter(markdown_path, "images", "utf-8") as md:
for block in extractor.extract(pdf="/path/to/pdf/file"):
md.write(block)
代码解释
- PDFPageExtractor :负责从 PDF 文件中提取内容。
device
参数指定是否使用 GPU,model_dir_path
指定模型存储路径。 - MarkDownWriter :将提取的内容写入 Markdown 文件。如果 PDF 包含插图、表格或公式,会将其截图保存到
assets
目录,并在 Markdown 文件中引用。
运行完成后,指定路径下将生成一个 *.md
文件。如果有插图,会生成一个 assets
目录保存图片。
将 PDF 转换为 EPUB
此操作分为两部分:首先使用 OCR 扫描和识别 PDF 内容(与 Markdown 转换类似),然后再通过 LLM 生成 EPUB 文件:
第一步:创建 PDF 提取器对象
python
from pdf_craft import PDFPageExtractor
extractor = PDFPageExtractor(
device="cpu", # 如果使用 GPU,请改为 device="cuda:0"
model_dir_path="/path/to/model/dir/path" # 模型下载和存储路径
)
第二步:配置 LLM 对象
python
from pdf_craft import LLM
llm = LLM(
key="sk-XXXXX", # LLM 提供商的 API 密钥
url="https://api.deepseek.com", # LLM 提供商的 API 地址
model="deepseek-chat", # LLM 提供商的模型名称
token_encoding="o200k_base" # 用于估算 token 的本地模型名称
)
第三步:分析 PDF 文件
python
from pdf_craft import analyse
analyse(
llm=llm, # 第二步配置的 LLM 对象
pdf_page_extractor=extractor, # 第一步创建的 PDFPageExtractor 对象
pdf_path="/path/to/pdf/file", # PDF 文件路径
analysing_dir_path="/path/to/analysing/dir", # 分析中间状态存储目录
output_dir_path="/path/to/output/files" # 分析结果存储目录
)
第四步:生成 EPUB 文件
python
from pdf_craft import generate_epub_file
generate_epub_file(
from_dir_path=output_dir_path, # 上一步生成的分析结果目录
epub_file_path="/path/to/output/epub" # 生成的 EPUB 文件保存路径
)
代码解释
- analyse 函数会扫描和分析 PDF 文件,生成中间状态和最终结果。
analysing_dir_path
用于存储中间状态,方便在意外中断后恢复分析。 - generate_epub_file 函数会根据分析结果生成 EPUB 文件,并按照书本结构划分章节,同时处理注释和引用。
资源
- GitHub 仓库 :github.com/oomol-lab/p...
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 丰富的 AI 工具库 -> 每日更新 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦