![](/img/trans.png)
[英]How to use pdfminer to extract text from PDF files stored in S3 bucket without downloading it locally?
[英]extract text from pdf File from S3 bucket python
我的 AWS s3 存储桶中有多个格式文件,例如 pdf,doc,rtf,odt,png,我需要从中提取文本。 我已经设法获得了内容列表及其路径。现在根据文件类型,我将使用不同的库从文件中提取文本。 由于文件可能有数千个,我需要直接从 s3 中提取文本而不是下载。
filespath=['https://abc.s3.ap-south-1.amazonaws.com/DocumentOnPATest', 'https://abc.s3.ap-south-1.amazonaws.com/IndustryReport2019.pdf', 'https://abc.s3.ap-south-1.amazonaws.com/receipt.png', 'https://abc.s3.ap-south-1.amazonaws.com/sample.rtf', 'https://abc.s3.ap-south-1.amazonaws.com/sample1.odt']
bucketname =abc
我尝试了一些但它给了我错误
for path in filespath:
ext=pathlib.Path(path).suffix
if ext=='.pdf':
pdf_file=PyPDF2.PdfFileReader(path)
print(pdf_file.extractText())
但我收到一个错误
File "F:\Projects\FileExtractor\fileextracts3.py", line 28, in <module>
pdf_file=PyPDF2.PdfFileReader(path)
File "C:\ProgramData\Anaconda3\lib\site-packages\PyPDF2\pdf.py", line 1081, in __init__
fileobj = open(stream, 'rb')
OSError: [Errno 22] Invalid argument: 'https://abc.s3.ap-south-1.amazonaws.com/IndustryReport2019.pdf
请帮我带头。 谢谢
PyPDF2
不支持直接从 s3 读取。 您需要先在本地下载它们。
您可以在此处尝试 boto3 解决方案,由 Justin Leto 提供。 对于每种文件类型,您仍然需要一种读取/转换文件 stream 的方法,但 PDF 答案就在那里。
import boto3
s3 = boto3.resource('s3')
obj = s3.Object(bucket_name, itemname)
fs = obj.get()['Body'].read()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.