用于PDF提取的Pythons库pdfreader不会迭代页面

用于PDF提取的Pythons库pdfreader不会迭代页面,python,pdf,Python,Pdf,我想用名为pdfreader的Python库从PDF文件中提取文本。 我按照这里的指示: 这是我的代码: import requests from io import StringIO, BytesIO from pdfreader import SimplePDFViewer, PDFDocument pdf_links = ['https://www.buelach.ch/fileadmin/files/documents/Finanzen/Finanz-_und_Aufgabenpla

我想用名为pdfreader的Python库从PDF文件中提取文本。 我按照这里的指示:

这是我的代码:

import requests
from io import StringIO, BytesIO
from pdfreader import SimplePDFViewer, PDFDocument

pdf_links = ['https://www.buelach.ch/fileadmin/files/documents/Finanzen/Finanz-_und_Aufgabenplan_2020-2024_2020-09-14.pdf',
             'https://www.buelach.ch/fileadmin/files/documents/Finanzen/201214_budget2021_aenderungen_gr.pdf',
             'http://www.dielsdorf.ch/dl.php/de/5e8c284c3b694/2020.04.06.pdf',
             'http://www.dielsdorf.ch/dl.php/de/5f17e472ca9f1/2020.07.20.pdf']

for pdf_link in pdf_links:

    response = requests.get(pdf_link)
    my_raw_data = response.content


    #extract text page by page
    with BytesIO(my_raw_data) as data:
        
        viewer = SimplePDFViewer(data)
        full_pdf_text = ''

        total_page_num = len(list(viewer))
        for i, page in enumerate(viewer):
            text = page.strings
            text = "".join(text)
            text = text.strip().replace('     ', '\n\n').strip()
            text = text.replace('  ', '\n\n')
            print('PAGE', i)
代码没有给我任何错误,但问题是它没有在页面上迭代。
变量
total\u page\u num
返回页数(多于1页),但当我进入循环时,它总是只进入一页(只有第一页)

解决此问题需要大量阅读Python模块pdfreader的文档。我对使用这个模块进行简单文本提取的难度感到震惊。花了几个小时才想出一个可行的解决办法

下面的代码将枚举各个页面上的文本。您仍然需要进行一些文本清理以获得所需的输出

我注意到您的一个PDF在解析过程中遇到了一些字体编码问题,这会抛出一条警告消息

import requests
from io import BytesIO
from pdfreader import SimplePDFViewer

pdf_links = [
    'https://www.buelach.ch/fileadmin/files/documents/Finanzen/Finanz-_und_Aufgabenplan_2020-2024_2020-09-14.pdf',
    'https://www.buelach.ch/fileadmin/files/documents/Finanzen/201214_budget2021_aenderungen_gr.pdf',
    'http://www.dielsdorf.ch/dl.php/de/5e8c284c3b694/2020.04.06.pdf',
    'http://www.dielsdorf.ch/dl.php/de/5f17e472ca9f1/2020.07.20.pdf']

for pdf_link in pdf_links:

    response = requests.get(pdf_link, stream=True)

    # extract text page by page
    with BytesIO(response.content) as data:

        viewer = SimplePDFViewer(data)

        all_pages = [p for p in viewer.doc.pages()]
        number_of_pages = len(all_pages)
        for page_number in range(1, number_of_pages + 1):
            viewer.navigate(int(page_number))
            viewer.render()
            page_strings = " ".join(viewer.canvas.strings).replace('     ', '\n\n').strip()
            print(f'Current Page Number: {page_number}')
            print(f'Page Text: {page_strings}')

我开始出现以下错误:,你知道可能是什么问题吗?错误是:没有这样的文件或目录:'/usr/local/lib/python3.7/dist packages/pdfreader/codecs/cmaps/Identity-H'我想在AWS lambdas上部署这个AWS lambdas会很有趣。你打算如何为你所有的源抓取(遍历)URL?您计划将所有提取的输出放在哪里?