Я пробовал несколько программ: pdftotext, pdf2txt.py, ... Все они могут извлекать текст из PDF-файлов, но та, которая делает это лучше, — это good ol' less
: текст из PDF имеет правильную разметку. Как less делает это? Использует ли она какую-либо библиотеку или встроена в обработку PDF?
Я спрашиваю, потому что хотел бы использовать эту функциональность программно, без необходимости запускать less как внешнюю программу (я работаю на Python).
Моя система такова:
» less --version
less 458 (GNU regular expressions)
Copyright (C) 1984-2012 Mark Nudelman
less comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the file named README in the less distribution.
Homepage: http://www.greenwoodsoftware.com/less
» uname -a
Linux polyphemus 3.13.0-53-generic #89-Ubuntu SMP Wed May 20 10:34:39 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
решение1
Ваш дистрибутив, вероятно, использует популярный lesspipe.sh
скрипт. Проверьте LESSOPEN
переменную окружения.
Этот скрипт существует во многих вариациях. Я рассматриваю версию Gentoo. В ней вы найдете следующую строку:
*.ps|*.pdf) ps2ascii "$1" || pstotext "$1" || pdftotext "$1" ;;
Это означает, что он попробует выполнить эти команды в указанном порядке. $1
— это имя файла.
Другая версияиспользует следующую команду:
pdftohtml -stdout "$t" | parsehtml -