在 C# .NET 中使用開源 Tabula 庫從 PDF 中提取表數據
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
PDF 文檔是一種無處不在的文件格式,用于以固定布局表示結構化文檔。但是,該格式本身不支持提取語義信息,如表格、圖像、文本等。這給以編程方式分析 PDF 文檔或將其轉換為其他格式(如 Excel)等任務帶來了挑戰。 在這篇博文中,我們將探討如何使用 C# 構建將 PDF 文檔中的表格數據直接提取為 .NET DataTable 等格式的能力。從 PDF 中提取表格數據使我們能夠有效地理解、分析和處理 PDF 表格中包含的結構化信息。 了解 PDF 表格結構在我們深入研究代碼之前,了解 PDF 格式表格的底層結構非常重要。PDF 文檔使用一系列繪圖命令來表示可視內容,這些命令將文本、線條和形狀呈現到虛擬“頁面”上。 PDF 中的表格呈現為這些繪圖基元的集合,沒有固有的邏輯分組或語義含義。它們只是在表格布局中呈現的矩形形狀、線條和文本。 為了以編程方式提取表數據,我們需要分析可視化布局并識別指示表結構的常見模式,例如:
大多數 PDF 提取庫都提供了分析這些視覺提示的工具,并通過檢測繪圖命令中的常見表格模式來識別基礎表。 使用 Tabula 提取表在這篇博文中,我們將使用開源 Tabula 庫從 C# 中的 PDF 中提取表格數據。Tabula 是一個流行的 Java 庫,適用于基本的表提取任務。 要從 C# 使用它,我們可以添加對它所依賴的 Tabula 和 Apache PDFBox 的引用。PDFBox 提供低級 PDF 解析和渲染功能。
通過引用的庫,我們現在可以編寫代碼從示例 PDF 文件中提取表數據:
TableExtractor 類處理 PDF 可視化效果的分析并識別表結構。它返回提取的表,其中包含組織成行和列的單元格文本值。 我們可以遍歷提取的表格并打印或進一步處理表格數據。這提供了一種在 .NET 中以編程方式解析 PDF 中的表的簡單方法。 處理復雜的 PDF 表格雖然在許多情況下很簡單,但 Tabula 可能會遇到更復雜的 PDF 表格布局,其中包含合并單元格、跨行/列、嵌套標題等。為了處理這些問題,我們需要一個更強大的 PDF 提取庫。 一種選擇是使用 PDFClown,這是一個用于高級 PDF 解析和呈現的開源 .NET 庫。它提供了非常低級的訪問來解析整個 PDF 內容結構并構造 DOM 表示。 我們可以在 PDFClown 之上編寫自定義邏輯來識別復雜的表格模式,并從可視化內容繪制命令中重建表格結構。 下面是一個示例方法:
我們遍歷每個內容元素,分析位置和大小鄰居等屬性,以了解視覺布局。然后,復雜表邏輯根據可視化渲染中檢測到的模式重建底層數據結構。 這允許通過分析原始 PDF 內容基元來處理任何類型的復雜表格結構。 最后的話在這篇博客文章中,我們介紹了 .NET 開發人員如何使用 C# 以編程方式從 PDF 文檔中提取表格數據。我們研究了 PDF 格式表格的底層結構以及用于直觀識別表格的一些常見模式。 我們演示了一種使用 Tabula 庫的簡單提取方法,以及使用 PDFClown 的低級 PDF 解析功能的更高級技術。能夠從 PDF 中理解和提取表格等結構化數據,為進一步處理和分析 PDF 文檔提供了許多可能性。 所示技術對于 ASP.NET 開發人員在其 .NET 應用程序中處理 PDF 文件非常有用。通過利用 Tabula 和 PDFClown 等 C# 庫,開發人員可以更輕松地從 PDF 中提取表格和其他結構化數據,以便進行額外處理并集成到他們的應用程序中。 該文章在 2024/4/17 17:21:51 編輯過 |
關鍵字查詢
相關文章
正在查詢... |