Извлечение текста из PDF и сравнение со словарем - PullRequest
0 голосов
/ 05 сентября 2018

В настоящее время я работаю над проектом, в котором я хочу извлечь текст из PDF, а затем проверить, появляется ли одно из слов в извлеченном тексте в определенном словаре. Если это так, я хочу, чтобы example.replace (file, x, y) заменил слово из моего текста значением из моего словаря.

Я борюсь с циклом проверки всех слов в моем тексте и автоматического сравнения их со словарем. Цель состоит в том, чтобы мне не приходилось вводить слова «старый» и «новый» самостоятельно, но программа проверяет все слова в тексте, и, если найдет слово в словаре, «старым» будет слово из текста и « новое "значение ключа. Ручная версия работает.

Вот мой код

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import StringIO

def convert_pdf_to_txt(path):

rsrcmgr = PDFResourceManager()

retstr = StringIO()
codec = 'utf-8'

laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
fp = open(path, 'rb')
interpreter = PDFPageInterpreter(rsrcmgr, device)
password = ""
maxpages = 0
caching = True
pagenos=set()

for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):
    interpreter.process_page(page)

text = retstr.getvalue()

fp.close()
device.close()
retstr.close()
return text

dictionary = {"Die" : "Der", "Arbeitsfläche":"Platz"}


def convert(file, old, new):

translation = convert_pdf_to_txt(file).replace(old, new)
return translation

print(convert('mytest.pdf','Die' ,'Der'))

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

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Если вы намереваетесь просто заменить слова извлеченного текста PDF значениями словаря, решение может помочь вам. Просто выберите слова, которые пересекаются с ключами словаря, и замените значения одно на другое.

import re
#text = Extracted text from PDF
text = r" with the loop for Die checking all words in my text and compare them to the dictionary automatically"
for key in set(text.split(' ')).intersection(dictionary.keys()):
    text = re.sub(key,dictionary[key],text)
0 голосов
/ 05 сентября 2018

Предполагая, что вы можете прочитать PDF-файл. Вы можете сохранить данные в списке, используя

list_voc = []

list_voc.extend(text.split())

теперь, используя простой цикл, вы можете проверить, принадлежит ли элемент списка к словарю или нет, и если это так, то заменить его.

indx=0
for i in pdf_vocab:
    if i in dictionary.keys():
        pdf_vocab[indx] = dictionary[i]
    indx = indx + 1

Переменная indx хранит индекс списка, всякий раз, когда элемент (или слово) находится в словаре, мы можем заменить это слово на этот конкретный индекс.

0 голосов
/ 05 сентября 2018

Так как я не могу комментировать ...

Этот цикл должен вам помочь.

for old, new in dictionary.items():
    # update text by replacing old with new

При замене вы должны быть уверены, что обмениваются только слова, иначе может произойти, что «книга»: «обувь» преобразует слово «книжный рынок» в «обувной рынок». Модуль может помочь вам здесь. https://docs.python.org/3/library/re.html

На самом деле этот парень решил ту же проблему. Поиск и замена на «только слово целиком»

Если вы также хотите обменяться фразами, порядок словаря может быть важным; словарь {'I': 'you', 'мне нравится': 'chicken'} преобразует слово «мне нравится» в слово «тебе нравится», хотя этого может и не быть.

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