在日常工作中,我们经常需要处理PDF文档,特别是扫描版的书籍或文献。今天有发现一个强大的开源工具 PDF-Craft,它能够智能地将PDF文件转换为Markdown或EPUB格式,并且具有智能识别章节、注释和引用的能力。
工具特性
支持逐页读取PDF文件 使用DocLayout-YOLO结合自定义算法提取文本 智能过滤页眉、页脚、脚注和页码 支持跨页文本连接处理 使用OnnxOCR进行文本识别 支持本地GPU加速 可选择性集成LLM服务进行更高级的处理
环境要求
Python 3.10或以上版本(推荐3.10.16) 可选:CUDA环境(用于GPU加速)
实践步骤
1. 基础安装
pip install pdf-craft
2. PDF转Markdown实践
这是最基础的功能,不需要调用远程LLM服务,完全依靠本地计算能力即可完成。第一次调用时会联网下载所需的模型。遇到文档中的插图、表格、公式,会直接截图插入到 MarkDown 文件中。
from pdf_craft import PDFPageExtractor, MarkDownWriter
# 初始化提取器
extractor = PDFPageExtractor(
device="cpu", # 使用GPU时改为 "cuda:0"
model_dir_path="/path/to/model/dir/path" # AI模型存放目录
)
# 开始转换
with MarkDownWriter(markdown_path, "images", "utf-8") as md:
for block in extractor.extract(pdf="/path/to/pdf/file"):
md.write(block)
3. PDF转EPUB高级实践
这个功能更为强大,需要配合LLM服务使用。
步骤1:配置PDF提取器
from pdf_craft import PDFPageExtractor
extractor = PDFPageExtractor(
device="cpu", # 使用GPU时改为 "cuda:0"
model_dir_path="/path/to/model/dir/path"
)
步骤2:配置LLM服务
from pdf_craft import LLM
llm = LLM(
key="sk-XXXXX", # LLM供应商提供的密钥
url="https://api.deepseek.com", # LLM API地址
model="deepseek-chat", # 模型名称
token_encoding="o200k_base"
)
步骤3:执行PDF分析
from pdf_craft import analyse
analyse(
llm=llm,
pdf_page_extractor=pdf_page_extractor,
pdf_path="/path/to/pdf/file",
analysing_dir_path="/path/to/analysing/dir",
output_dir_path="/path/to/output/files"
)
步骤4:生成EPUB文件
from pdf_craft import generate_epub_file
generate_epub_file(
from_dir_path=output_dir_path,
epub_file_path="/path/to/output/epub"
)
运维注意事项
模型存储管理
首次运行时会自动下载所需模型 建议预先下载模型并指定固定的模型目录 注意模型文件的磁盘空间占用
中断恢复机制 利用 analysing_dir_path目录实现断点续传新任务前记得清空或删除旧的分析目录 建议实现定期备份机制 性能优化建议 在有GPU的环境下优先使用CUDA加速 合理规划批处理任务,避免资源过度占用 监控CPU/GPU使用率,适时调整并发数
PDF-Craft是一个功能强大的PDF处理工具,特别适合处理扫描版书籍的转换工作。通过合理配置和使用,可以极大提高文档处理效率。建议在实际部署时,根据具体需求和硬件条件选择合适的功能模块。
