Какое программное обеспечение мне нужно для преобразования pdf в текст, который затем можно обрабатывать с помощью регулярных выражений для извлечения определенных фрагментов данных?

У меня есть куча pdf-файлов/форм в стандартизированном формате. Они содержат такую ​​информацию, как история версий, автор, кто подписал документ и на какие документы он ссылается. Мне нужно извлечь эту информацию для ввода в базу данных, содержащую информацию о документах. Я почти уверен, что смогу сделать это с помощью регулярных выражений, но я не совсем уверен, как это сделать. Я также хотел бы автоматизировать этот процесс, чтобы при создании новых документов они добавлялись в систему, а также система просматривала все документы на веб-странице и извлекала информацию.

В Linux вы можете использовать exiftoolдля извлечения .pdfметаданных и анализа их вывода с помощью регулярных выражений. Например, чтобы найти Creatorзаданный .pdf: exiftool doc.pdf | grep "^Creator" | perl -pe 's,^Creator.+: (.*)$,\1,'. Чтобы найти автора:exiftool doc.pdf | grep "^Author" | perl -pe 's,^Author.+: (.*)$,\1,'
Однако некоторая информация о документе, которую мне нужно извлечь, не будет в обычных метаданных. В самом документе будет текстовый раздел, в котором говорится, что авторизовано: «» или ссылки: «». Он должен извлечь фактический текст из документа и извлечь из него конкретный текст.
Документ можно преобразовать .pdfв текстовый файл. После этого можно будет извлечь фрагмент текста в зависимости от того, насколько регулярным он будет с использованием регулярных выражений. Вы не указали, какую ОС вы используете, но *nixэто можно автоматизировать с помощью pdftotextинструмента командной строки и комбинацииgrep/sed/cut/awk/perl
как будет выглядеть синтаксис этой команды pdftotext при использовании?
Вы когда-нибудь использовали командную строку Linux? Используйте это только это говорит в man pdftotext: pdftotext [options] [PDF-file [text-file]]. Это также говорит, что Pdftotext reads the PDF file, PDF-file, and writes a text file, text-file. If text-file is not specified, pdftotext converts file.pdf to file.txt. If text-file is ´-', the text is sent to stdout.. Так, например: pdftotext <doc>.pdfбудет производить <doc>.txtв том же каталоге.
Раньше я использовал командную строку Linux и использовал bash, awk и sed. Немного заржавел, но основные принципы помню. Просто спросил, какие аргументы были переданы и как.
Вы также можете посмотреть его на pdftotextстранице руководства и изучить его намного быстрее. Чтобы загрузить/выгрузить документы с/на веб-сервер, вы можете использовать scp, если SSHдоступ включен или lftp, извлечь метаданные локально и отправить их на веб-сервер. Вам понадобится список документов, которые вы уже обработали. В качестве альтернативы вам даже не нужно загружать .pdfс веб-сервера, потому что вы можете обработать его непосредственно на веб-сервере или смонтировать удаленный каталог с расширением sshfs.
.pdfВы можете запускать операцию извлечения метаданных каждый раз, когда добавляется новый , используя inotifyмеханизм или какой-либо обратный вызов веб-сервера, или выполнять его регулярно, используя crontabзадание. Я до сих пор не уверен, что вы предпочитаете *nixили Windows. Если вы предпочитаете последнее, я не могу вам помочь, потому что я им не пользуюсь. Кстати : это уже слишком много для комментария, поэтому, если вам это нравится, я преобразую его в ответ, и вы можете его принять.
@ArkadiuszDrabczyk, это было бы хорошо. Мне было интересно, почему вы этого не сделали.
О, и хотя я использую винду больше для общего пользования, это на линуксе

Ответы (1)

Документ можно преобразовать .pdfв текстовый файл. После этого должна быть возможность извлечь фрагмент текста в зависимости от того, насколько регулярным он будет с использованием регулярных выражений. Вы не указали, какую ОС вы используете, но *nixэто можно автоматизировать с помощью pdftotextинструмента командной строки и комбинации файлов grep/sed/cut/awk/perl.

Чтобы загрузить/выгрузить документы с/на веб-сервер, вы можете использовать scp, если SSHдоступ включен или lftp, извлечь метаданные локально и отправить их на веб-сервер. Вам понадобится список документов, которые вы уже обработали. В качестве альтернативы вам даже не нужно загружать .pdfс веб-сервера, потому что вы можете обработать его непосредственно на веб-сервере или смонтировать удаленный каталог с расширением sshfs. .pdfВы можете запускать операцию извлечения метаданных каждый раз, когда добавляется новый , используя inotifyмеханизм или какой-либо обратный вызов веб-сервера, или выполнять его регулярно, используя crontabзадание.

Я все еще не уверен, предпочитаете ли вы *nixили Windows. Если вы предпочитаете последнее, я не могу вам помочь, потому что я им не пользуюсь.