python pdf 转 md 文档 多个方案

推荐

常规pdf 推荐方案2,方案1

pdf中 图片多 扫描件 推荐ocr 方案3 

有大模型基础和资源 推荐 方案4 

方案1 pdf转word转html转md

解析较慢 链路较多 效果和 方案2类似 但不如方案2快


import time
import mammoth
import markdownify
from pdf2docx import Converter
# 参考 https://zhuanlan.zhihu.com/p/688159597  https://cloud.tencent.com/developer/article/1768983


# 转存Word文档内的图片
def convert_images(image):
    with image.open() as image_bytes:
        file_suffix = image.content_type.split("/")[1]
        path_file = base_path+"{}.{}".format(str(time.time()),file_suffix)
        with open(path_file, 'wb') as f:
            f.write(image_bytes.read())

    return {"src":path_file}


def pdf2md(pdf_path):
    start = time.time()
    word_path = pdf_path+'.docx'
    html_path = pdf_path+'.docx.html'
    md_path = pdf_path+'.docx.html.md'
    # 创建对象
    cv = Converter(pdf_path)
    # 实现 PDF 转换为 Word
    cv.convert(word_path, start=0, end=None)
    # 关闭对象
    cv.close()
    # 转化Word文档为HTML
    result = mammoth.convert_to_html(word_path,convert_image = mammoth.images.img_element(convert_images))
    # 获取HTML内容
    html = result.value
    # 转化HTML为Markdown
    md = markdownify.markdownify(html,heading_style="ATX")
    with open(html_path,'w',encoding='utf-8') as html_file,open(md_path,"w",encoding='utf-8') as md_file:
        html_file.write(html)
        md_file.write(md)

    elapse_time = time.time() - start
    print('转换 '+pdf_path+' 运行时间:'+ str(elapse_time))



if __name__ == '__main__':
    # pdf转doc转html转md
    base_path = '/Users/xxxx/'
    pdf2md(base_path+'xxxxx.pdf')
 



方案2 使用 pymupdf 的  pymupdf4llm

解析快 会存在字体缺失,乱码问题


import time
import pymupdf4llm

# 参考 https://pymupdf.readthedocs.io/en/latest/rag.html

# pdf

def pdf2md(pdf_path,md_path):
    start = time.time()
    md_text = pymupdf4llm.to_markdown(pdf_path, write_images=True)
    output = open(md_path, "w")
    output.write(md_text)
    output.close()
    elapse_time = time.time() - start
    print('转换 '+pdf_path+' 运行时间:'+ str(elapse_time))


if __name__ == '__main__':
    base_path = '/Users/xxxx/'
    pdf2md(base_path+'xxxxx.pdf',base_path+'xxxx.pdf.md')




方案3 使用 pix2text 进行 ocr识别 

pix2text 安装会很大,效果不错,解析时间会较长


import time
from pix2text import Pix2Text

# 主要使用ocr识别 参考 https://www.breezedeus.com/article/p2t-v1.1
# 类似项目 VikParuchuri/marker  https://github.com/VikParuchuri/marker?tab=readme-ov-file


def pdf2md(base_path,pdf_path,md_name):
    start = time.time()
    p2t = Pix2Text.from_config(enable_formula=False)
    doc = p2t.recognize_pdf(pdf_path)
    doc.to_markdown(out_dir=base_path,markdown_fn=md_name)
    elapse_time = time.time() - start
    print('转换 '+pdf_path+' 运行时间:'+ str(elapse_time))


if __name__ == '__main__':
    base_path = '/Users/xxx/'
    pdf2md(base_path,base_path+'xxx.pdf','xxx.pdf.md')




方案4 使用 ai模型 gpt 问答

效果不可控,解析时间长,需要微调和适配

参考 https://mp.weixin.qq.com/s/P5KBcqXBqHqvrqnlMIkQYA
  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python笔记.md 是一个用于记录Python编程相关内容的markdown文档。 在Python学习过程中,学习者通常会遇到各种问题和疑惑,需要有一个地方来记录学习笔记和重要概念,以方便日后复习和查阅。Python笔记.md 就是一个很好的选择。 Python笔记.md 可以按照自己的需要来组织内容,比如可以分为不同的章节或主题,并使用markdown语法来格式化文档,使其更加清晰易读。 在Python笔记.md中,可以记录Python的基础语法、常用数据结构、函数、类、模块等内容。此外,还可以记录一些常见的错误和解决方法,以便日后遇到类似问题时能够快速找到解决方案Python笔记.md 还可以用来记录自己的思考和理解。在学习过程中,我们常常会思考某个概念或代码背后的原理,这时候可以将自己的思考记录在笔记中,以便后续复习和回顾。 使用Python笔记.md 还可以方便与他人分享学习心得。可以在文档中加入注释或标题,使得文档更加易读和友好。同时,也可以将Python笔记.md 推送到版本控制系统中,与他人共享和共同编辑。 总之,Python笔记.md 是一个非常有用的工具,可以帮助学习者系统地记录、整理和复习Python编程相关的知识和经验。无论是初学者还是有经验的开发者,都可以从中受益,并提高自己的编程技能。 ### 回答2: Python笔记.md是一个使用Markdown语法编写的Python笔记文档。Markdown语法是一种轻量级的标记语言,可以快速地编辑和排版文档。 在Python笔记.md中,可以记录Python程序设计的相关知识、概念和技巧。通过使用Markdown语法,可以方便地插入代码块、链接、图片以及其他强调和排版格式,使得笔记更加直观和易读。 Python笔记.md可以按照不同的章节和主题组织内容,方便快速查找和阅读。在每个章节中,可以记录不同的Python编程概念,如数据类型、控制结构、函数、类等。可以通过示例代码和解释说明来详细解释这些概念的用法和特点。 在笔记中,还可以记录一些Python的常见问题和解决方案,例如常见错误、调试技巧等。这些内容可以帮助初学者更好地理解和掌握Python语言。 此外,Python笔记.md还可以连接到其他的Python资源,如官方文档、教程、在线代码编辑器等。这样可以提供更多的学习和参考资料。 总之,Python笔记.md是一个有条理、易读和方便编辑的Python学习笔记文档,可以帮助人们更好地学习和理解Python编程语言。 ### 回答3: Python笔记md是一种用来记录Python编程语言相关内容的文本文件格式。它使用Markdown语法来快速、简洁地编写和格式化笔记。 Python笔记md的优点是: 1. 简单易懂:Markdown语法简洁明了,使用起来非常简单,即便没有编程背景的人也能快速上手。 2. 跨平台兼容:无论是在Windows、Mac还是Linux系统中,Python笔记md都可以轻松使用。 3. 可读性强:Python笔记md的文本格式使得代码和说明可以同时显示,方便读者理解和学习。 4. 方便分享和发布:Python笔记md可以导出为HTML或PDF格式,方便分享给其他人或者发布到网络上。 5. 与开发工具兼容:大多数集成开发环境(IDE)和文本编辑器都支持Markdown语法,可以实时预览和编辑笔记。 使用Python笔记md可以帮助程序员记录代码和相关的解释和说明,方便复习和查看。它还可以用于编写技术博客、文档和教育材料等。而且由于其文本格式的特点,Python笔记md也非常适合使用版本控制系统进行版本管理。 总而言之,Python笔记md是一种简单、灵活且易于分享的笔记格式,可以有效提高编程学习和开发的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值