Ram*_*kar 5 python text-extraction information-extraction topic-modeling pdfplumber
我正在使用 python 进行主题建模任务,我想从年度/可持续性报告中提取文本。然而我的问题是,当我尝试提取报告时,提取的行在页面中的两个不同列之间断开,即它连接相邻段落中的两个不同行以构成一个句子。如何按照报告中的显示方式准确提取行。我已附上报告的版本和函数提取的行。
\n下面是我使用的函数:
\n#从url获取pdf的函数:
\ndef converter(url):\n text=[]\n req= requests.get(url)\n with pdfplumber.open(BytesIO(req.content)) as pdf:\n for i in range(0, len(pdf.pages)):\n pages= pdf.pages[i]\n text.append(pages.extract_text())\n return "\\n".join(str(i) for i in text)\nRun Code Online (Sandbox Code Playgroud)\n该图像是我正在提取的报告中的一个片段,报告中的文本分为两列,而 extract_content 函数将这两列混合起来得到一行,即将两列中的行连接起来并显示为一行。
\n这是报告的第一行(第一列和第二列的开头由函数合并在一起):
\n\n\n\\n2019 年我的首要职责之一是接受采访。当我们\n在 2016 年\n开始新的战略时期\xe2\x80\x9c早安挪威\xe2\x80\x9d节目\n进行谈话时,我表示希望AF 会感到 \\n关于 AF\xe2\x80\x99s\n当我们\n希望超越 \\n女性时,将同样紧密结合的百分比增加一倍的目标
\n
如果我能按照报告中给出的确切方式提取句子,那将会很有帮助。
\n这是基于samkit-jain对软件包问题的响应。
关键是page.crop
假设没有标题信息,将页面裁剪成两半:
left = page.crop((0, 0, 0.5 * page.width, 0.9 * page.height))
right = page.crop((0.5 * page.width, 0, page.width, page.height)
Run Code Online (Sandbox Code Playgroud)
然后提取文本并连接:
l_text = left.extract_text()
r_text = right.extract_text()
text = l_text + " " + r_text
Run Code Online (Sandbox Code Playgroud)
当然,如果报告中的某个页面有一个跨越两列的数字,则这种方法会弄乱该数据,因此您可能必须在每个页面上对此进行自定义。
| 归档时间: |
|
| 查看次数: |
2447 次 |
| 最近记录: |