Python 抓取非结构化 PDF

Python scraping an unstructured PDF

我们从为我们提供 PDF 版本说明的供应商处获得双周软件版本。笔记中有很多不相关的内容,但最终我们需要手动将这些笔记中的 copy/paste 信息放入 Confluence 页面。

理想情况下,我希望能够编写一个 python 应用程序,以便能够从 PDF 中抓取某些部分。结构大致如下(粗体部分是我要提取的部分):

  1. 简介
  2. 新功能
    2.1. 新功能 1
    描述
    2.2 新功能2
    描述
    .
    .
    .
    2.x) 新功能 X 描述
  3. 缺陷修复
    描述
    table 有缺陷描述

文档的其余部分与本例无关

我已经设法让它导入文件并提取(全部)文本,但我真的不知道如何只提取第 2 节的标题,然后对第 3 节只提取 table 并用 pandas 重新格式化。关于如何解决这个问题有什么建议吗?

import fitz

filename = '~\releasenotes.pdf'

doc = fitz.open(filename)
print (doc) #  Just to see what comes out

(接下来我该做什么?)

一个简单的正则表达式(regular expression)应该可以解决这个问题。当您阅读 pdf 时,我正在对文本的外观做出一些重大假设 - 我已经从您的 post 中复制了文本,并根据您的问题将其称为“文档”:)

import re #regular expression library

doc = '''
Introduction
New Features
2.1. New Feature 1
description
2.2 New Feature 2
description
.
.
.
2.x) New Feature X description
'''

ds_features = pd.Series(re.findall('2.[1-9].*\n', doc))

让我解压最后一行: re.findall 将在您的文档中生成与搜索字符串匹配的项目列表 '2.[1-9].*\n' 将查找 2. 后跟 [1-9] 中任意数字的所有实例,后跟任意数量的字符 .* 直到到达换行符 \n

希望这符合要求吗?