Я пытаюсь извлечь пригодные для использования тексты из PDF-файлов. Но некоторые PDF-файлы, такие как Вот этот, похоже, имеют определенный макет, потому что мой скрипт Python не может сохранять пробелы.
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 = ""
caching = True
pagenos=set()
for page in PDFPage.get_pages(fp, pagenos, password=password, caching=caching, check_extractable=True):
interpreter.process_page(page)
text = retstr.getvalue()
fp.close()
device.close()
retstr.close()
return text
print(convert_pdf_to_txt("1002459.pdf"))
Результат :
- 1 -
Combininglearningandreasoning:newchallengesforknowledgegraphsFrankvanHarmelen∗∗DptofComputerScience,VrijeUniversite...
Поэтому я попробовал с pdf2txt.py в команде. Тот же результат. Но я нашел вариант -A, который дает мне ожидаемый результат:
- 1 -
Combining learning and reasoning: new challenges for
knowledge graphs
Frank van Harmelen∗
Могу ли я получить тот же результат с моим скриптом Python?






Ты сможешь; просто скопируйте то, что делает -A. По сути, проблемный PDF-файл не «печатает» пробелы, а только слова, и анализ макета делает вывод, что из пробелов должны быть пробелы. pdf2txt активирует это, установив laparams.all_texts = True.
Ну, вы можете сделать даже в Python Можете проверить код по приведенной ниже ссылке, он сделан на питоне.
https://github.com/baruchel/txt2pdf
Привет Анкит, добро пожаловать в StackOverflow! Довольно неясно, что вы хотите сказать, можете ли вы уточнить, что вы имеете в виду и как предоставленная ссылка помогает ответить на вопрос?
Идеально. Спасибо