Импорт файла PDF с текстом в файл CSV с помощью Python - PullRequest
0 голосов
/ 06 ноября 2018

Я немного заблокирован здесь. Меня попросили поместить файлы PDF в файл CSV с помощью Python. Я искал в интернете и нашел это руководство по этому адресу:

https://www.blog.pythonlibrary.org/2018/05/03/exporting-data-from-pdfs-with-python/

Там написан код, объясняющий, как импортировать PDF в CSV, я поместил строки здесь:

import csv
import os

from miner_text_generator import extract_text_by_page


def export_as_csv(pdf_path, csv_path):
    filename = os.path.splitext(os.path.basename(pdf_path))[0]

    counter = 1
    with open(csv_path, 'w') as csv_file:
        writer = csv.writer(csv_file)
        for page in extract_text_by_page(pdf_path):
        text = page[0:100]
        words = text.split()
        writer.writerow(words)


if __name__ == '__main__':
    pdf_path = 'w9.pdf'
    csv_path = 'w9.csv'
    export_as_csv(pdf_path, csv_path)

Моя проблема сейчас в том, что когда я запускаю его, он говорит мне, что модуль "miner_text_generator" не найден. Я пытался установить его с помощью pip, но он тоже не работает. Я работаю над Python 3.7

У вас, ребята, есть идеи, как это исправить? Или есть другой способ сделать это? Я не могу использовать API-скрипт или веб-скрипт, он должен оставаться на моем компьютере.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 06 ноября 2018

Вы не можете импортировать или установить, используя pip, потому что miner_text_generator - это код Python, написанный автором сообщения. Вы можете создать .py файл и сохранить его в той же папке вашего кода, тогда import будет работать:

# miner_text_generator.py

import io

from pdfminer.converter import TextConverter
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfpage import PDFPage

def extract_text_by_page(pdf_path):
    with open(pdf_path, 'rb') as fh:
        for page in PDFPage.get_pages(fh, 
                                      caching=True,
                                      check_extractable=True):
            resource_manager = PDFResourceManager()
            fake_file_handle = io.StringIO()
            converter = TextConverter(resource_manager, fake_file_handle)
            page_interpreter = PDFPageInterpreter(resource_manager, converter)
            page_interpreter.process_page(page)

            text = fake_file_handle.getvalue()
            yield text

            # close open handles
            converter.close()
            fake_file_handle.close()

def extract_text(pdf_path):
    for page in extract_text_by_page(pdf_path):
        print(page)
        print()

if __name__ == '__main__':
    print(extract_text('w9.pdf'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...