Извлечение текста и таблиц из PDF и Word

Я создаю приложение, которое извлекает текст и таблицы из PDF-файла и создает из него HTML. Как лучше всего убедиться, что я извлекаю данные в одном формате из документа PDF и Word? Например, поскольку в настоящее время у меня возникла проблема с одним из файлов, содержащих таблицу, которая разбита на 2 страницы, она не извлекается правильно, и в HTML я вижу, что интервал не такой, как в исходном файле.

По большей части я пытался извлечь таблицы с помощью pdfplumber , но, как я уже упоминал, возникают проблемы с таблицами, которые находятся на двух страницах.

Для PDF-файлов страница на самом деле является страницей, как бумажная страница. Таким образом, в PDF-файле на самом деле нет связи между двумя частями таблицы на двух страницах. PDF — это выходной формат, в основном предназначенный для печати, основанный на PostScript. То, что вы пытаетесь сделать, похоже на использование программного обеспечения OCR и ожидания, что оно будет знать, что эти две части таблицы каким-то образом связаны друг с другом. Документы Word — это, конечно, совсем другая игра, и должна быть возможность выводить хороший HTML. Ваш вопрос, вероятно, должен сосредоточиться на одном или другом, потому что они даже не похожи.

KIKO Software 04.06.2024 22:30

Я добавил для вас тег «python». Я думаю, это язык программирования, который вы используете? Без этого ваш вопрос не дойдет до людей, которые смогут на него ответить.

KIKO Software 04.06.2024 22:35

Я хочу подтвердить то, что сказал КИКО. PDF никогда не задумывался как источник данных. Он просто «поместил букву X здесь, теперь поставь букву Y там». Внутри PDF-документа нет структуры — ни слов, ни абзацев, ни таблиц, ни списков. Это просто список букв и мест. Преобразователи делают все возможное, чтобы воссоздать то, что видит человек, но это никогда не будет идеально.

Tim Roberts 04.06.2024 23:11

Так может быть, конвертировать PDF в Word, а затем извлечь? Это дало бы мне лучший результат, чем непосредственное извлечение PDF-файла? Есть ли у вас предложение по хорошему методу извлечения текста, таблиц и формата из документа Word.

Shwapx 05.06.2024 05:53
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
117
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Формат PDF основан на фиксированном макете и лишен какой-либо логической или семантической структуры. Хотя может показаться, что визуально отформатированный документ имеет четкую организацию заголовков, абзацев и таблиц, эта структура в большинстве случаев явно не представлена ​​во внутренней иерархии данных PDF.

В отличие от документов HTML или Word, внутри файла PDF нет ничего, что указывало бы на наличие таблицы. Это просто текст, организованный по физическим координатам x,y в документе, который «выглядит» как таблица. Из-за этого любой библиотеке — Pdfplumber, Camelot, Tabula, Pdftables, Pdf-table-extract и т. д. — очень сложно постоянно извлекать таблицы на 100 % правильно. Они используют различные методы, такие как правила, компьютерное зрение, машинное обучение или их комбинацию, для извлечения таблиц из PDF-файлов. Когда таблицы в PDF-файлах переполняются на следующую страницу, это еще больше усложняет задачу, поскольку перед продолжением таблицы могут появиться заголовки страниц, номера страниц или водяные знаки.

Преобразование PDF в Word с последующей попыткой извлечения также не сработает по той же причине. Преобразователь не будет знать, что это извлекаемая таблица, прежде чем ее можно будет воссоздать как «таблицу» в Word.

По моему опыту, есть два решения, которые отлично работают:

  1. Высококачественное программное обеспечение для оптического распознавания символов. Я добился успеха с помощью аналитики документов Azure.
  2. Извлеките текст с сохранением макета, а затем передайте текст в LLM для извлечения таблиц. Это хорошо работает с GPT4 и Gemini Pro.

Но оба подхода требуют отправки данных третьей стороне.

Извлеките текст с сохранением макета, а затем передайте текст в LLM для извлечения таблиц. Это хорошо работает с GPT4 и Gemini Pro. Я уже делаю это, чтобы перевести переданный текст. Я имею в виду, что если я извлеку текст, как LLM узнает, где должна быть таблица?

Shwapx 06.06.2024 20:20

@Shwapx, это магия магистратуры. Я предполагаю, что они прошли обучение с достаточным количеством данных и таблиц. Но вам необходимо предоставить входной текст в режиме сохранения макета. Под сохранением макета я подразумеваю, что извлеченный текст должен иметь ту же структуру, что и исходный PDF-файл. Отказ от ответственности по следующей ссылке: Я являюсь соучредителем и архитектором этого продукта. Вы можете использовать этот экстрактор для извлечения текста из PDF (по умолчанию он использует режим сохранения макета). Возьмите этот текст (с таблицами) и попросите ChatGPT извлечь таблицы.

arunvenkat 07.06.2024 05:55

Как вы думаете, я смогу добиться этого с помощью любой библиотеки Python?

Shwapx 08.06.2024 12:52
pdfplumber есть возможность извлекать текстовые строки. Они отмечают это как экспериментальную функцию. Это работает, но имеет (или имело) свои ограничения.
arunvenkat 08.06.2024 17:20

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

Shwapx 09.06.2024 15:27

Такая подсказка: Please extract all the tables from the given context. The format of the extracted tables should be in CSV format. \n\nThe context:\n[paste document contents in layout preserved mode]\n\nTables:\n

arunvenkat 10.06.2024 04:47

Другие вопросы по теме