PDFium Delphi Component Docs

ExtractTables Метод

Компонент: TPdf  ·  Модуль: PDFium
Обнаруживает и извлекает табличную структуру с текущей страницы PDF

Syntax

function ExtractTables(
  const Options: TPdfTableExtractionOptions): TPdfTables;

Description

Стратегия с линиями разметки преобразует собственные штриховые сегменты путей в координаты страницы, выделяет связные сетки и объединяет смежные базовые ячейки, когда локальный разделитель отсутствует

С DetectFilledRulings та же стратегия читает и залитую геометрию: залитый прямоугольник толщиной не более MaxRulingThickness становится одной линией вдоль своей длинной оси, а больший залитый прямоугольник, например затенённая ячейка, отдаёт свои четыре края. Затем каждая координата линии подтягивается в пределах RulingSnapTolerance, так что куски границ по ячейкам, двойные рамки и затенённые ячейки с небольшим зазором соединяются в одну сетку. Текстовые процессоры и браузеры рисуют таблицы именно так, поэтому они сообщаются как сетки с линиями разметки, а не как фрагменты по пробелам. IncludeFormXObjects обходит формовые XObject с их комбинированными матрицами

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

Каждый TPdfTable включает границы страницы, RowCount и количество столбцов, DetectionMode, достоверность и значения TPdfTableCell с текстом, границами, состоянием IsHeader, RowIndex, ColumnIndex, RowSpan и ColumnSpan

Output

Budgets and tuning

MinRows, MinColumns, AlignmentTolerance, RulingTolerance, MinColumnGap, MaxRowGapFactor и MinConfidence управляют обнаружением; MinRows может равняться 1 для сеток с линиями разметки, тогда как обнаружение по пробелам всегда требует минимум две строки

DetectFilledRulings, MaxRulingThickness, RulingSnapTolerance и IncludeFormXObjects настраивают путь залитой геометрии; значения по умолчанию — включено, 3 пункта, 4 пункта и включено

MaxWords, MaxRulingSegments, MaxCells и MaxTables срабатывают по принципу fail-closed до неограниченной работы или выделения памяти

Example

var
  Options: TPdfTableExtractionOptions;
  Tables: TPdfTables;
begin
  Options := TPdfTableExtractionOptions.Default;
  Tables := Pdf1.ExtractTables(Options);
  if Length(Tables) > 0 then
    Memo1.Text := Tables[0].ToCsv;
end;

See Also

ExtractDocumentTables, BuildReflowDocument, GetStructuredText, PageWordBoxes