Я создаю приложение, которое извлекает текст и таблицы из PDF-файла и создает из него HTML. Как лучше всего убедиться, что я извлекаю данные в одном формате из документа PDF и Word? Например, поскольку в настоящее время у меня возникла проблема с одним из файлов, содержащих таблицу, которая разбита на 2 страницы, она не извлекается правильно, и в HTML я вижу, что интервал не такой, как в исходном файле.
По большей части я пытался извлечь таблицы с помощью pdfplumber , но, как я уже упоминал, возникают проблемы с таблицами, которые находятся на двух страницах.
Я добавил для вас тег «python». Я думаю, это язык программирования, который вы используете? Без этого ваш вопрос не дойдет до людей, которые смогут на него ответить.
Я хочу подтвердить то, что сказал КИКО. PDF никогда не задумывался как источник данных. Он просто «поместил букву X здесь, теперь поставь букву Y там». Внутри PDF-документа нет структуры — ни слов, ни абзацев, ни таблиц, ни списков. Это просто список букв и мест. Преобразователи делают все возможное, чтобы воссоздать то, что видит человек, но это никогда не будет идеально.
Так может быть, конвертировать PDF в Word, а затем извлечь? Это дало бы мне лучший результат, чем непосредственное извлечение PDF-файла? Есть ли у вас предложение по хорошему методу извлечения текста, таблиц и формата из документа Word.






Формат PDF основан на фиксированном макете и лишен какой-либо логической или семантической структуры. Хотя может показаться, что визуально отформатированный документ имеет четкую организацию заголовков, абзацев и таблиц, эта структура в большинстве случаев явно не представлена во внутренней иерархии данных PDF.
В отличие от документов HTML или Word, внутри файла PDF нет ничего, что указывало бы на наличие таблицы. Это просто текст, организованный по физическим координатам x,y в документе, который «выглядит» как таблица. Из-за этого любой библиотеке — Pdfplumber, Camelot, Tabula, Pdftables, Pdf-table-extract и т. д. — очень сложно постоянно извлекать таблицы на 100 % правильно. Они используют различные методы, такие как правила, компьютерное зрение, машинное обучение или их комбинацию, для извлечения таблиц из PDF-файлов. Когда таблицы в PDF-файлах переполняются на следующую страницу, это еще больше усложняет задачу, поскольку перед продолжением таблицы могут появиться заголовки страниц, номера страниц или водяные знаки.
Преобразование PDF в Word с последующей попыткой извлечения также не сработает по той же причине. Преобразователь не будет знать, что это извлекаемая таблица, прежде чем ее можно будет воссоздать как «таблицу» в Word.
По моему опыту, есть два решения, которые отлично работают:
Но оба подхода требуют отправки данных третьей стороне.
Извлеките текст с сохранением макета, а затем передайте текст в LLM для извлечения таблиц. Это хорошо работает с GPT4 и Gemini Pro. Я уже делаю это, чтобы перевести переданный текст. Я имею в виду, что если я извлеку текст, как LLM узнает, где должна быть таблица?
@Shwapx, это магия магистратуры. Я предполагаю, что они прошли обучение с достаточным количеством данных и таблиц. Но вам необходимо предоставить входной текст в режиме сохранения макета. Под сохранением макета я подразумеваю, что извлеченный текст должен иметь ту же структуру, что и исходный PDF-файл. Отказ от ответственности по следующей ссылке: Я являюсь соучредителем и архитектором этого продукта. Вы можете использовать этот экстрактор для извлечения текста из PDF (по умолчанию он использует режим сохранения макета). Возьмите этот текст (с таблицами) и попросите ChatGPT извлечь таблицы.
Как вы думаете, я смогу добиться этого с помощью любой библиотеки Python?
pdfplumber есть возможность извлекать текстовые строки. Они отмечают это как экспериментальную функцию. Это работает, но имеет (или имело) свои ограничения.
И что вы используете для запроса, даже если я получу извлеченный текст в режиме сохранения макета и передам его в OpenAI, он предоставит мне документ в простой форме без сохранения макета?
Такая подсказка: 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
Для PDF-файлов страница на самом деле является страницей, как бумажная страница. Таким образом, в PDF-файле на самом деле нет связи между двумя частями таблицы на двух страницах. PDF — это выходной формат, в основном предназначенный для печати, основанный на PostScript. То, что вы пытаетесь сделать, похоже на использование программного обеспечения OCR и ожидания, что оно будет знать, что эти две части таблицы каким-то образом связаны друг с другом. Документы Word — это, конечно, совсем другая игра, и должна быть возможность выводить хороший HTML. Ваш вопрос, вероятно, должен сосредоточиться на одном или другом, потому что они даже не похожи.