[开源] 扫描件 PDF 转 Markdown / EPUB,自动修复 OCR 错误

182 天前
 BlackHole1

最近我们开源了一个 PDF 处理工具 - pdf-craft,专注于解决扫描书籍 PDF 转换的痛点,让书籍数字化更智能。pdf-craft 支持将 PDF 转为 Markdown 和 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/ 找到我们。

5924 次点击
所在节点    分享创造
47 条回复
yueyueniao89
181 天前
先马克,pdf 转 epub
x4gz
181 天前
这个带多线程吗 不然有的几百页的书转起来也太慢了
moskize
180 天前
@x4gz 下一步考虑做多线程
PersueYan
179 天前
这个有点意思
其他格式文档统一转 pdf 好搞
然后 pdf 统一提取文字图片,再分类按需处理
先 mark 了
就是不知道复杂格式的 pdf 识别和提取准确度怎么样
zizek
177 天前
初步用了一下 pdf-craft 的本地模型功能,发现它是把矢量 pdf 文档当成图片,重新 OCR 之后形成的文本。
请教一下,有这样一个需求,能用 pdf-craft 实现吗?
完全是矢量化的 pdf 文档,已经不需要识别了。只需要内容提取出来,生成 epub 。

其实现在 calibre 能够完成这样的转化,但缺点是,跨页的段落不能合并成一段,这样一句话就会被放在两个段落里。pdf-craft 似乎能够很好地合并段落,保持句子的完整性。
如果提供“直接处理矢量 pdf"的选项,那就能节省很多时间。不知是否可能?
moskize
175 天前
@zizek 没错,现在会多此一举做这个动作。这里是一个优化点,等于要允许跳过 OCR 截断直接进入分析阶段。calibre 估计没有做合并段落操作。这个用算法很难准确识别,毕竟 PDF 本身是没有这个信息的。pdf-craft 完全是让 LLM 来判断句子到底有没有被切断,然后拼起来。
isSamle
154 天前
能不能整个 docker😂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1120037

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX