当前位置: 首页 > news >正文

启用Python将PDF/HTML转为Markdown的几种办法

在爬虫项目中,我们经常需要将PDF或HTML内容转换为更易处理的Markdown格式。以下是几种常用的方法:

1. 使用pdf2md (针对PDF转MD)

安装依赖

bash

pip install pdfminer.six python-docx markdown

PDF转Markdown函数

python

import io
from pdfminer.high_level import extract_text
from docx import Documentdef pdf_to_markdown(pdf_path, md_path=None):"""将PDF文件转换为Markdown格式:param pdf_path: PDF文件路径:param md_path: 输出的Markdown文件路径(可选):return: Markdown文本(如果md_path为None)"""# 提取PDF文本text = extract_text(pdf_path)# 简单清理和转换md_content = text.replace('\n\n', '\n').replace('\n', '  \n')if md_path:with open(md_path, 'w', encoding='utf-8') as f:f.write(md_content)return Nonereturn md_content

2. 使用html2text (针对HTML转MD)

安装

bash

pip install html2text

HTML转Markdown函数

python

import html2textdef html_to_markdown(html_content, md_path=None):"""将HTML内容转换为Markdown格式:param html_content: HTML字符串或文件路径:param md_path: 输出的Markdown文件路径(可选):return: Markdown文本(如果md_path为None)"""# 如果是文件路径则读取内容if isinstance(html_content, str) and html_content.endswith(('.html', '.htm')):with open(html_content, 'r', encoding='utf-8') as f:html_content = f.read()# 创建转换器h = html2text.HTML2Text()h.ignore_links = False  # 不忽略链接h.bypass_tables = False  # 转换表格h.mark_code = True  # 标记代码块md_content = h.handle(html_content)if md_path:with open(md_path, 'w', encoding='utf-8') as f:f.write(md_content)return Nonereturn md_content

3. 使用pypandoc (通用转换工具)

安装

bash

pip install pypandoc
# 还需要安装pandoc: https://pandoc.org/installing.html

通用转换函数

python

import pypandocdef convert_to_markdown(input_path, output_path=None, input_format=None):"""通用文档转换函数(支持PDF/HTML/DOCX等):param input_path: 输入文件路径:param output_path: 输出文件路径(可选):param input_format: 输入格式(如'html','pdf'), 自动检测:return: Markdown文本(如果output_path为None)"""# 自动检测格式if input_format is None:if input_path.endswith('.pdf'):input_format = 'pdf'elif input_path.endswith(('.html', '.htm')):input_format = 'html'elif input_path.endswith('.docx'):input_format = 'docx'else:input_format = 'markdown'# 转换选项extra_args = ['--wrap=none']  # 不自动换行# 执行转换output = pypandoc.convert_file(input_path, 'markdown', format=input_format,extra_args=extra_args)if output_path:with open(output_path, 'w', encoding='utf-8') as f:f.write(output)return Nonereturn output

4. 综合封装类

python

class DocumentConverter:def __init__(self):self.html_converter = html2text.HTML2Text()self.html_converter.ignore_links = Falseself.html_converter.bypass_tables = Falsedef convert(self, input_content, output_path=None, input_type='auto'):"""通用文档转换方法:param input_content: 输入内容(文件路径或字符串):param output_path: 输出路径(可选):param input_type: 输入类型(pdf/html/auto):return: Markdown内容(如果output_path为None)"""# 自动检测输入类型if input_type == 'auto':if isinstance(input_content, str):if input_content.lower().endswith('.pdf'):input_type = 'pdf'elif input_content.lower().endswith(('.html', '.htm')):input_type = 'html'elif input_content.lower().startswith('

使用示例

转换PDF

python

# PDF转MD
pdf_text = pdf_to_markdown('document.pdf', 'output.md')# 使用综合类
converter = DocumentConverter()
converter.convert('document.pdf', 'output.md')

转换HTML

python

# HTML字符串转MD
html_content = "

Title

Paragraph

" md_content = html_to_markdown(html_content)# HTML文件转MD html_to_markdown('page.html', 'page.md')# 使用综合类 converter = DocumentConverter() converter.convert('page.html', 'page.md')

注意事项

  1. PDF转换精度:PDF转Markdown通常会有格式损失,复杂排版可能无法完美转换

  2. HTML转换:html2text对复杂网页的支持有限,可能需要调整参数

  3. 依赖管理:pypandoc需要额外安装pandoc,但转换效果最好

  4. 编码问题:确保处理文件时使用正确的编码(通常是utf-8)

  5. 性能考虑:大文件转换可能消耗较多内存,可考虑分块处理

以上方法可以根据项目需求选择使用,对于简单的转换html2text和pdfminer足够,对于更复杂的需求建议使用pypandoc。

http://www.zskr.cn/news/74373.html

相关文章:

  • 完整教程:springcloud:理解springsecurity安全架构与认证链路(二)RBAC 权限模型与数据库设计
  • 实用指南:面向多模态医学图像配准与分割的MambaMorph模型:基于状态空间建模的全流程分析与应用
  • MySQL 数据库知识点扫盲:从基础到核心,全面掌握关键特性
  • 闻气即知
  • 2025年上海注册公司服务哪家好?注册公司服务选哪家好?
  • 2025 --【J+S 二十连测】-- 第十七套 总结
  • 待学知识点汇总
  • 2025年中国十大木门品牌排名:看哪家品牌口碑好?
  • PbootCMS数据库配置,修改为Mysql数据库,配置Mysql出错解决办法
  • 2025年五大北京陪诊公司权威盘点:从流程优化到情感支持的多维评估
  • NOIP2025 游击
  • 2025年中国五大版权音乐专业公司推荐:看看哪家信誉好?
  • PbootCMS出现登录失败,表单提交校验失败等情况怎么办?
  • 智能AI客服服务商哪家强?2025年最新技术趋势与五大服务商综合实力推荐
  • 2025年资深采购推荐:五大真空袋实力厂家全方位横评与避坑指南
  • 2025别墅进口地板十大品牌综合实力榜:甄选奢华家居的终极指南
  • 2025年北京造价咨询公司怎么选?最新市场格局分析与五家实力机构专业推荐
  • 2025年资深行业顾问推荐:当前最具竞争力的5家北京造价咨询公司全方位对比
  • 在河北保定市高阳县老家农村盖房子,自建房公司哪家靠谱?高阳县靠谱自建房公司TOP6实用选择指南
  • 河北保定高阳县农村自建房公司深度测评,高阳县地区靠谱自建房公司全维度对比排行榜
  • 帝国cms升级时提示:帝国CMS8.0版开始只发布UTF8编码的版本,如果要升级8.0版请先转为UTF8编码再升级,谢谢!
  • 2025竹板材制造企业TOP5权威推荐:技术深度测评指南,甄
  • 2025年哈尔滨香坊区艺考培训学校排行榜,姜伟博校长的成就如
  • 2025哈尔滨香坊区艺考培训学校TOP5口碑测评:一铭培训学
  • python在windows下以字符串形式写入文件时,系统会自动将字符串中的\n转成\r\rn,造成写入后的数据与实际的不符,需注意。
  • 2026年天津市宝坻区农村自建房推荐榜,图南建房宝领衔 六家实力公司赋能乡村宜居生活
  • 2025年12月聚丙烯纤维网,仿钢纤维,纤维厂家最新推荐:材料兼容性测评与品牌介绍
  • 119_尚硅谷_函数注意事项和细节(2)
  • 2025年12月高延性混凝土纤维,聚丙烯粗纤维,纤维厂家最新推荐:水利工程适配性与选择指南
  • 2025年12月聚乙烯醇纤维,聚丙烯网状纤维,纤维厂家最新推荐:混凝土适配性测评与选购建议