Чтение таблиц из файла PDF с использованием С#
Я хочу читать таблицы внутри pdf файла, у меня есть pdf файл со всей таблицей, какой SDK используется в С# для распознавания таблиц внутри pdf файлов и некоторого механизма для чтения ячейки по ячейке?
Может ли кто-нибудь предложить, если вы знаете какие-либо DLL, которые распознают таблицы внутри pdf файлов.
Ответы
Ответ 1
В формате PDF нет понятия "таблица", так как его векторная грамматика состоит из простых примитивов, связанных с путями (то есть строк, кривых, контуров шрифтов...) и выборочного содержимого (то есть растровых изображений).
Однако хороший эвристический алгоритм мог обнаружить слабое присутствие так называемого "табличного" представления (т.е. типично, пересекающихся линий, смешанных с содержимым).
Ответ 2
iTextPdf может быть тем, что вы ищете. Я не использовал его, но слышал очень хорошие вещи. Кроме того, он является открытым исходным кодом и бесплатным (для некоммерческого использования), что всегда приятно.
Ответ 3
Я знаю, что это старый вопрос, но кому-то это может понадобиться
"Совершенно очевидно" введение:
PDF файлы представляют собой поток графического объекта (например, строки) и текст. Когда PDF визуализируется, человеческий глаз понимает, что есть таблицы из-за линий и текста между ними.
Решение (мое)
Начиная с чтения PDF (iTextSharp), вам необходимо:
1. прочитайте строки (надеюсь, только вертикальные и горизонтальные линии),
2. присоединиться к строкам (строка таблицы может быть несколько строк, например, один на ячейку),
3. понять, где находятся таблицы (иногда создавая гипотезу, основанную на ваших потребностях);
4. необязательно найти текст за пределами таблиц (лучше сохранить весь текст) и вставить его в параграфы,
5. Вставьте текст внутри ячеек таблицы
Если вам нужно что-то уже написанное для начала (для работы с моими pdf файлами), вы можете найти что-то здесь https://github.com/bubibubi/ExtractTablesFromPdf
Он использует версию GPL iTextSharp.
Ответ 4
PDFBox
Из IKVM.NET успешно используется для анализа PDF-документов в .NET.
Использование PDFBox для разбора PDF файлов довольно просто:
private static string parseUsingPDFBox(string filename)
{
PDDocument doc = PDDocument.load(filename);
PDFTextStripper stripper = new PDFTextStripper();
return stripper.getText(doc);
}
Ответ 5
Мне нужно было то же самое для проекта. Мой процесс немного накладные, но он работает достаточно хорошо. Когда я его немного улучшу, я отправлю его. Ешьте основной поток:
- использовать libpdf для преобразования pdf в json
- импортировать json файл для получения текстовых строк с их координатами
- использовать ghostscript для преобразования PDF в изображение
- используйте Aforge blobcounter, чтобы получить ячейки таблицы.
- группировать ячейки в таблицы
- используйте расположение и размер ячейки, чтобы определить, какие текстовые строки содержат
Ответ 6
Можете ли вы принести сюда свой код или в списке основных строк кода?
Буби, ты написал хороший ответ. Я не проверял это. Но как определить, есть ли таблица с разными типами разделительных линий? А как насчет таблиц без строк?
DZ