Извлечение / очистка PDF с Textract - Не печатать текст - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь извлечь текст из PDF-файлов, используя Textract. Однако, когда я печатаю текст в конце кода, он просто печатает много пустых мест. Кто-нибудь может указать мне в направлении того, что происходит? (текст не = "", кстати)

import os
import codecs
import PyPDF2 
import textract
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords

for filename in os.listdir('Harbour PDF'):
    if '.DS_Store' == filename:
        continue
    filename = 'Harbour PDF/' + filename
    print(filename)

    pdfFileObj = open(filename,'rb')

    pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

    num_pages = pdfReader.numPages
    count = 0
    text = ""

    while count < num_pages:
        pageObj = pdfReader.getPage(count)
        count +=1
        text += pageObj.extractText()


    if text != "":
        text = text
    else:
        text = textract.process(pdfFileObj, method='tesseract', language='eng')

    print(text)

1 Ответ

0 голосов
/ 22 марта 2019

2 функции, которые я использую через Python (2-й нуждается в tesseract). Я предпочитаю тессеракт вместо pdfminer, но они фактически делают то же самое. Не уверен, что не так с вашим кодом, но я считаю, что это альтернативные эквиваленты.

from PIL import Image
import pytesseract
import cv2
import os
import subprocess

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

#converts pdf, returns its text content as a string
def convert(fname, pages=None):
    if not pages:
        pagenums = set()
    else:
        pagenums = set(pages)

    output = StringIO()
    manager = PDFResourceManager()
    converter = TextConverter(manager, output, laparams=LAParams())
    interpreter = PDFPageInterpreter(manager, converter)

    infile = open(fname, 'rb')
    for page in PDFPage.get_pages(infile, pagenums):
        interpreter.process_page(page)
    infile.close()
    converter.close()
    text = output.getvalue()
    output.close
    return text

def to_txt(pdf_path, output_dir, name=None):
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)
    if name == None:
        parts = pdf_path.split('\\')
        fname = parts[-1][:-4] + '.txt'
        fname = fname.replace(" ", "_")
        end = output_dir + fname
    else:
        if name[-4:] != '.txt':
            name += '.txt'
        end = output_dir + name
    cmd = ['pdftotext', pdf_path,
           end]
    subprocess.call(cmd)
    print('Converted')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...