說點真實的感受 :網上看啥組件都好,實際測,啥組件都不行。效果好的不開源收費,開源的效果不好。測試下來,發現把組件融合起來,還是能不花錢解決問題的,都是麻煩折騰一些。這里分享了目前網上能夠看到的資料。很多資料都是反復重復的,且效果不好的。目前網上基本沒有太好用的工具,也沒有太好的方案資料。剩下的就是收費效果好的。
PDF解析中的諸多挑戰
版面分析:如何得到標題、如何的得到段落(正確的段落)、如何得到表格、如何得到圖片,圖和得到圖片上的文字?
還有細節問題:雙欄和多欄的問題、公式問題
掃描件:掃描件本質上是圖片,如何從圖片中解析得到文件。
PDF解析的主要思路
針對上述的挑戰,PDF解析主要分為兩個方向。一是標準PDF文件,程序可讀。二是掃描文件,實際上就是圖片,程序不可直接讀。
- 解析和結構分析:?PDF?抓取工具首先解析?PDF?文件并分析其結構以識別文檔中的各種元素。?解析涉及檢查布局、字體樣式、表格、標題和其他結構組件,以了解內容的組織和安排。
- 文本提取:?然后,該工具采用?OCR?技術將掃描或基于圖像的?PDF?轉換為機器可讀的文本。?OCR?算法通過分析?PDF?中的視覺數據并識別字符,將其轉換為可編輯和可搜索的文本來實現此目的。
- 數據提取和模式識別:?一旦數據轉換為機器可讀格式,PDF?抓取工具就會應用模式識別算法來識別文本中的特定數據點,例如文檔中的關鍵字、模式或預定義結構。?例如,抓取工具可以根據預定規則或正則表達式查找發票號碼、日期、客戶姓名或產品詳細信息。
- 輸出和格式:?然后,PDF?抓取工具將提取的數據組織成相關字段和結構化格式,例如電子表格、數據庫或?JSON/XML,以供進一步分析。
OCR解析的路線
OCR是唯一的解決掃描版文件的方案,包括獲取圖片上的內容。
unstructured
GitHub - Unstructured-IO/unstructured: Open source libraries and APIs to build custom preprocessing pipelines for labeling, training, or production machine learning pipelines.
Paddle-structure
https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/ppstructure/table/README_ch.md#41-%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B
Meta的版面恢復大模型:Nougat
Meta的版面恢復大模型:Nougat??|?Breezedeus.com
Nougat被戲稱為富人的玩具。有一段這樣的描述,就知道它有多慢了!“在一臺配備有24GB VRAM的NVIDIA A10G顯卡的機器上,可以并行處理6頁
內容。生成速度在很大程度上取決于給定頁面上的文本量。在沒做任何推理優化時,按平均每頁有 ~1400
個 tokens算,Nougat base模型處理一個batch圖片的平均時間為19.5秒
。”
Nougat:結合光學神經網絡,引領學術PDF文檔的智能解析、挖掘學術論文PDF的價值?-?汀、人工智能?-?博客園
P2T檢查走小模型的路線,目前拿來做內容識別還是OK的,特別是在公式方面。
GitHub - breezedeus/Pix2Text: Pix In, Latex & Text Out. Recognize Chinese, English Texts, and Math Formulas from Images. 80+ languages are supported.
PDF?解析工具對比
使用Python操作PDF:常用PDF庫總結?-?知乎
大模型RAG問答下的實用開源文檔解析工具總結及技術思考:從文檔版本分析到單雙欄處理
PDF信息提取技術的匯總(干貨滿滿!)?-?知乎
可以拿到bbox的組件
pdfplunber??pdfminer??pymupdf??papermage??這些組件是不是都可以拿到bbox?
- pdfplumber:pdfplumber?是一個基于?PDFMiner?的?Python?庫,專門用于提取?PDF?文件中的文本和表格數據。它提供了一些方法來獲取文本、表格和頁面的?bounding?box?信息。
- pdfminer:PDFMiner?是一個功能強大的?PDF?處理工具,可以用于提取?PDF?文件中的文本和布局信息。通過?PDFMiner,你可以獲取文本、圖片、表格等元素的位置信息,從而獲得它們的?bounding?box。
- pymupdf:PyMuPDF(也稱為MuPDF)是一個用于處理?PDF?文件的?Python?庫,提供了豐富的功能,包括提取文本、圖像和其他元素的信息,以及獲取它們的?bounding?box。
- papermage:Papermage?是一個用于處理?PDF?文件的?Python?庫,它使用了?PDFMiner?和其他一些工具,可以用于提取?PDF?文件中的文本、圖像和布局信息,包括?bounding?box。
可以拿到bbox的組件組件對比
- pdfplumber:
- 優點:pdfplumber?提供了簡單易用的接口,使得提取文本和表格數據以及獲取?bbox?變得非常方便。
- 它能夠準確地提取文本的?bbox,并且支持表格的識別和提取。
- 在處理包含復雜布局的?PDF?文件時表現較好。
- 缺點:對于處理包含大量圖像的?PDF?文件時,性能可能不如其他庫。
- 對于一些特殊格式的?PDF?文件,可能會出現解析錯誤。
- 優點:pdfplumber?提供了簡單易用的接口,使得提取文本和表格數據以及獲取?bbox?變得非常方便。
- pdfminer:
- 優點:PDFMiner?是一個功能強大且靈活的庫,可以用于處理各種類型的?PDF?文件。
- 它提供了豐富的功能和選項,使得用戶可以對文本和布局信息進行更深入的處理和分析。
- 缺點:相比于其他庫,PDFMiner?的接口相對較復雜,需要更多的代碼來實現相同的功能。
- 在處理復雜布局的?PDF?文件時,可能需要額外的調整和處理,以獲得準確的?bbox?信息。
- 優點:PDFMiner?是一個功能強大且靈活的庫,可以用于處理各種類型的?PDF?文件。
- pymupdf:
- 優點:PyMuPDF(MuPDF)是一個快速和高效的?PDF?處理庫,對于大型?PDF?文件的處理效率較高。
- 它提供了一些簡單的方法來獲取文本、圖像和布局信息,并且可以準確地提取?bbox。
- 缺點:PyMuPDF?的文檔和社區支持相對較少,有時可能需要進行一些自行探索和調試。
- 優點:PyMuPDF(MuPDF)是一個快速和高效的?PDF?處理庫,對于大型?PDF?文件的處理效率較高。
- papermage:
- 優點:Papermage?是一個基于?PDFMiner?和其他一些工具構建的庫,它提供了一些簡單的接口來處理?PDF?文件。
- 它支持獲取文本、圖像和布局信息,并且能夠準確地提取?bbox。
- 缺點:Papermage?相對較新,可能還不夠成熟,可能存在一些功能上的限制和問題。
- 相比于其他庫,Papermage?的文檔和社區支持較少。
- 優點:Papermage?是一個基于?PDFMiner?和其他一些工具構建的庫,它提供了一些簡單的接口來處理?PDF?文件。