You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何读取PDF/Word文档保留项目符号列表结构并生成HTML

针对Word文档的处理方案
  • 优先使用python-docx库,可直接读取docx格式的原生文档结构,无需额外推断格式。每个段落对象的style属性可直接识别是否为列表项,paragraph.level属性直接返回嵌套层级:0对应一级列表,1对应二级列表,以此类推。
  • 区分列表类型:通过paragraph._p.pPr.numPr节点属性可判断是有序列表(数字、字母等编号类型)还是无序列表(圆点、方块等项目符号),可直接映射为HTML的<ol>、<ul>标签。
针对PDF文档的处理方案

PDF本身无原生列表语义,需根据格式特征推断,分两类场景处理:

  • 可复制文本的原生PDF:使用PyMuPDF(fitz)库读取每个文本块的坐标、缩进值,通过缩进量的差值划分嵌套层级,比如0-20磅映射为一级列表,20-40磅映射为二级列表;同时匹配行首的项目符号特征(•、□、-、1.、a.等规则符号),识别列表类型。
  • 扫描版PDF:先通过pytesseract配合OpenCV做OCR识别,先对文档做倾斜校正后提取文本和对应坐标,后续层级识别逻辑和原生PDF一致。
通用HTML转换逻辑
  • 提取内容时按顺序存储每个元素的三类属性:内容文本、类型(普通段落/无序列表项/有序列表项)、嵌套层级数值
  • 生成HTML时遍历元素列表,动态维护当前层级栈:遇到层级高于当前栈顶时新增对应<ul>/<ol>标签,层级低于当前栈顶时闭合对应数量的列表标签,所有列表项统一用<li>包裹,普通段落直接用<p>标签即可。
  • 兼容技巧:如果文档格式复杂度较高,可先将原文档手动/通过LibreOffice命令行另存为中间HTML格式,再用BeautifulSoup解析提取结构,容错率远高于直接解析原生文档。

内容的提问来源于stack exchange,提问作者Guiffou Joel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:06:03