最近我们开源了一个 PDF 处理工具 - pdf-craft,专注于解决扫描书籍 PDF 转换的痛点,让书籍数字化更智能。pdf-craft 支持将 PDF 转为 Markdown 和 EPUB ,智能处理文本、图表、公式等内容,适用于技术文档、书籍数字化、论文研究等场景。
PDF 转 Markdown
PDF 转 EPUB
技术亮点
项目基于 Python 开发,可通过 pip 安装:
pip install pdf-craft
核心使用方法示例:
# PDF 转 Markdown (纯本地处理)
from pdf_craft import PDFPageExtractor, MarkDownWriter
extractor = PDFPageExtractor(
  device="cuda:0",  # GPU 加速
  model_dir_path="/path/to/model/dir/path",
)
with MarkDownWriter(markdown_path, "images", "utf-8") as md:
  for block in extractor.extract(pdf="/path/to/pdf/file"):
    md.write(block)
对于更复杂的 EPUB 转换,可以接入 LLM:
from pdf_craft import LLM, analyse, generate_epub_file
# 配置 LLM
llm = LLM(
  key="sk-XXXXX",
  base_url="https://api.deepseek.com",
  model="deepseek-chat",
  token_encoding="o200k_base",
)
# 分析 PDF
analyse(
  llm=llm,
  pdf_page_extractor=extractor,
  pdf_path="/path/to/pdf/file",
  analysing_dir_path="/path/to/temp",
  output_dir_path="/path/to/output",
)
# 生成 EPUB
generate_epub_file(
  from_dir_path="/path/to/output",
  epub_file_path="/path/to/book.epub",
)



想快速尝试 pdf-craft 而不想折腾环境配置?我们提供了更简单的方式: 使用 OOMOL Studio 一键体验:pdf-craft for OOMOL studio
OOMOL Studio 是我们开发的工作流 IDE ,内置了隔离的运行环境,无需复杂配置,即可立即体验 pdf-craft 的全部功能。 关于 OOMOL Studio 可以查看之前的介绍: 一款全新的工作流 IDE。
当然,pdf-craft 仍然完全开源,你依然可以按照上述方法在自己的环境中配置使用。
项目刚刚起步,我们非常欢迎各位 V 友参与:
如果觉得不错,欢迎给项目点个 star ⭐,有什么想法也可以在评论区交流,或者提交 PR 一起完善这个工具。
你也可以通过 https://oomol.com/community/ 找到我们。
|  |      1simple233      224 天前 牛的,那么快又有新东西了 | 
|  |      2uCharles      224 天前 好厉害 | 
|  |      3chjian      224 天前 大佬厉害 | 
|  |      4regent      224 天前 对于爱看书的人是一个福音,谢谢! | 
|  |      5jimrok      224 天前 感觉现在正处在寒武纪大爆发阶段,各种新应用层出不穷。 | 
|  |      6kitty7030      224 天前 可以增加个功能 再转化为 pdf | 
|  |      8b821025551b      224 天前 @moskize pdf 的兼容性更好,随便拖到浏览器就能看;这个过程就是将扫描版 pdf 转成矢量版 pdf ,提升清晰度,缩小文件体积。 | 
|      9timeisweapon      224 天前 对于普通个人用户来说,还是在线转换工具方便 | 
|  |      10yibie      224 天前 能接 Ollama 吗? | 
|  |      11yazoox      224 天前 via Android 这个是真的牛逼! | 
|  |      12docx      224 天前 via iPhone 分栏的 PDF 能完美解析吗 | 
|  |      15sunnysab      224 天前 flowhub 中点击 Open By OMMOL Studio 没有反应(似乎只是刷新了当前页面)。 分析了《聪明在于勤奋,天才在于积累》(华罗庚)一书,第 4 页的分数( 22/7 )没有识别成公式,整本书识别得不错,比当时导入微信读书时识别得强。 | 
|      16jhytxy      224 天前 via iPhone 求 docker 镜像 | 
|  |      17urlk      224 天前 微软貌似也有个 markitdown 专门转 PDF 的, 貌似没有 orc | 
|  |      18ayang23      224 天前 效果貌似不错 | 
|  |      19EngAPI      224 天前 不错啊,造福墨水屏 | 
|      20bfdh      224 天前 model_dir_path="/path/to/model/dir/path", 新手求问,这个应该从哪里下? | 
|  |      24zero469      224 天前 非常好的 idea ,太牛逼了 | 
|  |      25zero469      224 天前 不知道作者有没有尝试过 7B 或 32B 的 LLM ,如果效果也 OK 的话连带模型做一个纯本地的方案感觉更有吸引力 | 
|  |      26Dreamerwwr      224 天前 在哪里配置 LLM 的 API 呢?打开后,没看到配置的位置 | 
|  |      27KiriGiri      224 天前 厉害,做了我想做的。 | 
|      28ration      224 天前 喜欢在电纸书上看书,这个真不错,谢谢 | 
|      29cyp0633      224 天前  1 好用,不过现在 LLM 主要是用来纠正文字吧,我觉得可以用 Gemini 等多模态 LLM 一块儿识别公式,转换成 LaTeX 格式 | 
|  |      31hinate      224 天前 via Android 太强了👍🏻 | 
|  |      32cooper      224 天前 这个好,已 star ! | 
|      33manning      224 天前 mathpix 上付费的 PDF 转 markdown ,这个能代替吗 | 
|  |      34UB      224 天前 跟 PyMuPDF 比起来怎么样呢?同时 PyMuPDF 也有 LLM 的支持 https://pymupdf.readthedocs.io/en/latest/pymupdf4llm/ | 
|  |      35moskize      224 天前 @3085570450tt 看介绍它们好像是为 LLM 提取文本,而不是用 LLM 处理文本。而且 PyMuPDF 我记得是不提供 OCR 的。 | 
|  |      37Yien      224 天前 via Android 厉害(òωó)👍 | 
|  |      38luyg      224 天前 厉害,我要试试 | 
|  |      39akira      224 天前 先给个 star 后面有空了 试一下 | 
|  |      40oyjt      224 天前 大佬,厉害呀。先 star 了为敬 | 
|      41yueyueniao89      223 天前 先马克,pdf 转 epub | 
|  |      42x4gz      223 天前 这个带多线程吗 不然有的几百页的书转起来也太慢了 | 
|      44PersueYan      221 天前 这个有点意思 其他格式文档统一转 pdf 好搞 然后 pdf 统一提取文字图片,再分类按需处理 先 mark 了 就是不知道复杂格式的 pdf 识别和提取准确度怎么样 | 
|      45zizek      219 天前 初步用了一下 pdf-craft 的本地模型功能,发现它是把矢量 pdf 文档当成图片,重新 OCR 之后形成的文本。 请教一下,有这样一个需求,能用 pdf-craft 实现吗? 完全是矢量化的 pdf 文档,已经不需要识别了。只需要内容提取出来,生成 epub 。 其实现在 calibre 能够完成这样的转化,但缺点是,跨页的段落不能合并成一段,这样一句话就会被放在两个段落里。pdf-craft 似乎能够很好地合并段落,保持句子的完整性。 如果提供“直接处理矢量 pdf"的选项,那就能节省很多时间。不知是否可能? | 
|  |      46moskize      217 天前 @zizek 没错,现在会多此一举做这个动作。这里是一个优化点,等于要允许跳过 OCR 截断直接进入分析阶段。calibre 估计没有做合并段落操作。这个用算法很难准确识别,毕竟 PDF 本身是没有这个信息的。pdf-craft 完全是让 LLM 来判断句子到底有没有被切断,然后拼起来。 | 
|  |      47isSamle      196 天前 能不能整个 docker😂 |