Python 抓取非结构化 PDF
Python scraping an unstructured PDF
我们从为我们提供 PDF 版本说明的供应商处获得双周软件版本。笔记中有很多不相关的内容,但最终我们需要手动将这些笔记中的 copy/paste 信息放入 Confluence 页面。
理想情况下,我希望能够编写一个 python 应用程序,以便能够从 PDF 中抓取某些部分。结构大致如下(粗体部分是我要提取的部分):
- 简介
- 新功能
2.1. 新功能 1
描述
2.2 新功能2
描述
.
.
.
2.x) 新功能 X
描述
- 缺陷修复
描述
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
。
希望这符合要求吗?
我们从为我们提供 PDF 版本说明的供应商处获得双周软件版本。笔记中有很多不相关的内容,但最终我们需要手动将这些笔记中的 copy/paste 信息放入 Confluence 页面。
理想情况下,我希望能够编写一个 python 应用程序,以便能够从 PDF 中抓取某些部分。结构大致如下(粗体部分是我要提取的部分):
- 简介
- 新功能
2.1. 新功能 1
描述
2.2 新功能2
描述
.
.
.
2.x) 新功能 X 描述 - 缺陷修复
描述
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
。
希望这符合要求吗?