PDFium Delphi Component 文件

ExtractTables 方法

元件: TPdf  ·  單元: PDFium
從目前 PDF 頁面偵測並擷取表格結構

Syntax

function ExtractTables(
  const Options: TPdfTableExtractionOptions): TPdfTables;

Description

線框策略會將原生筆畫路徑線段轉換為頁面座標、分離出相連的網格,並在缺少局部分隔線時合併相鄰的基礎儲存格

啟用 DetectFilledRulings 時,同一策略還會讀取填滿幾何:厚度不超過 MaxRulingThickness 的填滿矩形會沿其長軸成為一條線框,而更大的填滿矩形(例如帶底紋的儲存格)則提供其四個邊。接著每一條線框座標都會在 RulingSnapTolerance 範圍內吸附,讓逐儲存格的邊框碎片、雙重邊框,以及帶小溝槽的底紋儲存格接合成一個網格。文書處理器與瀏覽器的匯出檔就是這樣繪製表格,因此它們會被回報為線框網格,而不是空白片段。IncludeFormXObjects 會以合成後的矩陣走訪 form XObject

空白策略會將原生詞框組成視覺列,並要求多列之間重複出現對齊的欄位錨點。已位於偵測到的線框網格內部的詞會被排除,且每個欄位邊界都必須是一條縱向走道,在所有兩側都有內容的列上不含任何文字,這樣兩端對齊的段落就不會被誤報為表格

每個 TPdfTable 包含頁面邊界、RowCount 與欄數、DetectionMode、信心度,以及帶有文字、邊界、IsHeader 狀態、RowIndex、ColumnIndex、RowSpan 與 ColumnSpan 的 TPdfTableCell 值

Output

Budgets and tuning

MinRows、MinColumns、AlignmentTolerance、RulingTolerance、MinColumnGap、MaxRowGapFactor 與 MinConfidence 控制偵測行為;MinRows 對線框網格可以為 1,而空白偵測始終至少需要兩列

DetectFilledRulings、MaxRulingThickness、RulingSnapTolerance 與 IncludeFormXObjects 微調填滿幾何路徑;預設值分別為開啟、3 點、4 點與開啟

MaxWords、MaxRulingSegments、MaxCells 與 MaxTables 會在產生無上限的運算或記憶體配置之前先回報失敗

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