Извлечение текста из файла PDF
Мне нужно извлечь текст из файла PDF. Этот текст, вероятно, будет в табличном формате, и он будет использоваться для автоматической передачи данных между внешней стороной и нашими системами.
Кто-нибудь может предложить инструмент командной строки (например, pdf to txt) или библиотеку, которая была бы хороша для этого?
Варианты языка:
- C# (предпочтительно)
- Ява (если я должен)
Я нашел некоторые идеи здесь, но я думаю, что парень говорил больше об одноразовой ситуации, я говорю больше как ежедневный импорт:
https://stackru.com/questions/488089/extracting-tables-from-pdf-files
7 ответов
pdftotext
кажется, делает свое дело довольно приятно.
pdftotext file.pdf [textfile.txt]
Изменить: я не уверен, как вы хотели бы сохранить информацию о таблицах. Лучше всего выглядит (по крайней мере, на мой человеческий глаз) получается
pdftotext -layout file.pdf [textfile.txt]
Это позволяет сохранить исходный макет документа как можно лучше. В частности, таблицы по-прежнему выглядят довольно хорошо при выводе текста. По умолчанию столбцы таблицы интерпретируются как столбцы текста (ужасно). Еще один вариант, который выглядит не так хорошо для меня, но все же может быть полезным, это -raw
вариант.
Существует также PdfBox и JPedal на Java. Таблицы не существуют в формате файла PDF, поэтому любое программное обеспечение будет "угадывать" их.
Я не могу предоставить решение, но только дать общий совет. Я советую вам открыть PDF-документ в Блокноте или другом текстовом редакторе и изучить коды форматирования. Их очень легко понять. Например, //par - это абзац, а //tab - это табуляция. Когда вы узнаете коды форматирования для макетов таблиц, вам будет очень легко найти собственное решение для извлечения чего-либо из PDF-документа.
Табличные данные в PDF обычно трудно извлечь должным образом, поскольку большинство файлов PDF не содержат метаданных структурированного содержимого. А без метаданных PDF-файлов это просто куча текста и других операций. В большинстве случаев только человек может сказать, есть ли таблица в документе.
Практически любые достаточно продвинутые инструменты и библиотеки пытаются структурировать текст, извлеченный из PDF, с помощью эвристики. Результаты, конечно, варьируются от инструмента к инструменту и от библиотеки к библиотеке.
Вы можете попробовать библиотеку Docotic.Pdf (отказ от ответственности: я работаю на Bit Miracle), чтобы извлечь текст из файлов PDF. Я считаю, что библиотека должна извлекать текст с качеством, достаточным для дальнейшей обработки.
Пожалуйста, посмотрите на пример, который показывает, как извлечь текст из PDF.
Apache Tika - это набор инструментов Java с открытым исходным кодом, который специализируется на том, что вы ищете: извлечение структурированного контекста из различных документов, включая PDF.
Он использует PDFBox для формата файлов PDF, но обеспечивает уровень абстракции, который идеально подходит для извлечения структурированного контекста.
Он содержит утилиту командной строки - см. Здесь.
Попробуйте библиотеку java pdf с открытым исходным кодом