有没有办法从URL读取PDF文档的第一页而不保存在本地?我需要在网站上读取一个PDF文档的请求。在下面,你会发现我试图执行的代码。该代码适用于一些http URL,但不适用于其他URL。
import urllib3
urllib3.disable_warnings()
with urllib3.PoolManager() as http:
r = http.request('GET', url)
with io.BytesIO(r.data) as f:
reader = PyPDF2.PdfFileReader(f)
contents = reader.getPage(0).extractText().split('\n')
下面是我使用以下url运行此代码时的输出:“http://www.ain.gouv.fr/IMG/pdf/aprejetdae20210709enligne.pdf“
['', '', '', '', '˘ˇˆ', '˙˝', '˚', '!˛', '˛ ', '', 'ˆ˙ˆ#$%', '$', "#'˙", '( ', '', '', '', '˘ˇˆˇ˙', '˝˘ˇˆˇ˛˚', '˜', ' !"ˇ#ˆ"!$%!"ˇ#&', "ˇ'", '˜', '(', '!"ˇ#ˆˇ!$%!"ˇ#)&*', '˜', '((ˇˇ%!"!ˇ', '+,+-', '(./', '01(', '!,(2$˙', '""˚345', '6', '7((&(1(8', '1ˆ(1((˛.', '˜', '$!"!ˇ(1*(1', '1', ',1˝/9,', '/1(', '˜', '\'%!"!ˇ(1(1', '1,1˝/9,(6', '˜', ')%:(()', '˜', '+,+-(.$!"!ˇ()', '˜', '(!˙%!"!ˇ()5,5,((', '=( ...
Python版本:Python 3.10.0语言
2条答案
按热度按时间hsgswve41#
LlamaIndex(GPT Index)有一个方法使用PyPDF2从文件中读取PDF的页面,可以创建一个类似的新方法,它将字节发送到PyPDF,而不是从文件中阅读,然后在for循环中只读取第一页。
方法链接:https://github.com/jerryjliu/gpt_index/blob/c9ee3eb18226c985884f0b1e452207a1c8669b5a/gpt_index/readers/file/docs_parser.py#L12
改良方法:
第一页返回文本:
qoefvg9y2#
简短回答NO(非正常),较长回答MAYBE,但在受控设置中。
对于您的问题有三种类型的PDF,在共同的顺序非线性,线性,自定义流。和自定义流需要支付图书馆两端,所以让我们拒绝。
当你下载一个WEB线性化PDF文件的开始部分时,你会很快看到第一页,但是除非你把下载的文件保存为Zer0page.pdf,否则你不能很容易地查询该页
要使任何查看器能够查询页面,以便您需要下载完整的对象字典,它通常位于完全下载的pdf的末尾。
您的示例链接是最常见的类型,因此“第0页”地址存储在需要完整下载的文件末尾。请参见此处,并注意右侧滚动条的位置这是任何编辑器(如pyton extractor等)都能看到的PDF。所有用于阅读和提取的重要数据都在下载文件的末尾(无论是否存储到内存中)。正如你所看到的,对象可以有任何顺序,这里12在10和45之前(文件的根)在11之后,因此是第一页(在你的例子中,这里突出显示为10obj)可以是任何数字,并且很容易(有时是)成为最后下载的对象。通常,你不会看到第一页,直到完整的进度条在最后。