RAG系列:復雜文檔解析不理想?使用 TextIn xParse 輕松解析多樣性 PDF 文檔
在RAG系統的建設中,文檔預處理是一個非常關鍵的環節,因為只有將文檔中的圖表、表格、公式以及手寫批注等信息按閱讀順序還原出來,并最終解析為Markdown格式,這樣才能夠構建高質量的知識庫和高效的信息檢索系統,讓LLM更好的讀懂文檔,最終給到用戶更準確更全面的回答。
目前的文檔解析工具算是百花齊放了,有很多優秀的開源工具(MinerU、Docling、Unstructured等等),在我之前的文章也有講過。
今天給大家測評一款優秀的文檔解析工具 - TextIn xParse[1] ,看下它的文檔解析能力到底如何,希望通過我的測評能夠給大家帶來更多更好的選擇。
為使本次測評能真正作為大家的選擇參考,本次測評使用的數據集是由上海人工智能實驗室開源的一個針對真實場景下多樣性文檔解析評測集 - OmniDocBench[2]。
OmniDocBench評測集涉及981個PDF頁面,涵蓋9種文檔類型、4種排版類型和3種語言類型,文檔覆蓋面廣,包含學術文獻、財報、報紙、教材、手寫筆記等,而且所有的標注都經過人工篩選,智能標注,人工標注及全量專家質檢和大模型質檢,數據質量較高,評測結果有很高的可信度。
TextIn xParse 簡介
TextIn xParse是一個專為LLM下游任務設計的通用文檔解析服務,具有解析速度快、穩定性高,特別是在表格識別上進行了專項優化。
識別能力覆蓋全面,具有各類常見文檔的識別解析能力,支持標準的金融報告、國家標準、論文、企業招投標文件、合同、文書、工程圖紙、電子書、試卷等文檔內容。
TextIn xParse 測評
是否真如宣傳的那樣優秀,我們通過客觀的測評來驗證。
首先通過TextIn xParse對OmniDocBench評測集中的981個PDF頁面進行解析,整體耗時1177s,平均一頁的解析速度為1.2s,這個解析速度相比于開源工具(如MinerU)提供的線上服務快了將近8倍,解析速度非常的快,這個數據僅供參考,大家可以自行去體驗。
接下來我們將TextIn xParse解析出來的981個Markdown文檔,給到OmniDocBench提供的評測方法進行測評。
下圖就是TextIn xParse和其它開源工具在文本、公式、表格以及閱讀順序這四大模塊的具體表現:
指標說明:
1. Edit Dist(編輯距離):,衡量預測文本和真實文本之間的最小編輯操作數,值越小越相似;
2. TEDS(表格結構相似度):衡量預測表格和真實表格在結構和內容上的相似度,值越大越相似。
從整體(Overall Edit)來看,TextIn xParse不管是對英文文檔(0.27)還是中文文檔(0.33),都比大多數開源工具表現出色,由此可表明,TextIn xParse是一款能力較強且較為全面的文檔解析工具。
下面我們看下TextIn xParse在不同模塊的表現:
- 文本(Text Edit):TextIn xParse不管是對英文文檔(0.12)還是中文文檔(0.16)都表現出色,尤其是對于中文文檔表現得最好,表明其在處理純文本內容時具有較高的準確性;
- 公式(Formula Edit):TextIn xParse不管是對英文文檔(0.33)還是中文文檔(0.43)都表現出色,尤其是對于中文文檔表現依然是最好的,表明其在識別和解析公式時具有較高的準確性;
- 表格(Table TEDS/Edit):TextIn xParse表現優秀,其中在表格結構相似度上,無論是對英文文檔(81.57)還是中文文檔(83.55)都表現得最好,表明其在處理表格內容時能夠很好地保持原始結構和內容,這也表明了TextIn xParse確實在表格識別上進行了專項優化;
- 閱讀順序:(Read Order Edit):TextIn xParse表現優秀,無論是對英文文檔(0.06)還是中文文檔(0.13)都表現得最好,表明其在保持文本閱讀順序方面具有很高的準確性。
TextIn xParse 集成
TextIn xParse提供了多種集成方式,支持在線預覽與導出、實時API調用、離線調用以及私有化部署等方式,可根據您的需求靈活選擇。
在線預覽與導出
最輕量級的使用方式,支持識別結果的在線預覽和編輯,支持批量導入與導出,對非開發者友好。
實時 API 調用
最常見的調用方式,所有請求均實時返回,支持豐富的參數設置,適合在線類應用和時效要求高的開發者。
一個接口,支持PDF、Word(doc/docx)、常見圖片(jpg/png/webp/tiff)、HTML等多種文件格式。一次請求,即可獲取文字、表格、標題層級、公式、手寫字符、圖片信息。
實時API調用示例代碼:
import requests
import json
def get_file_content(filePath):
withopen(filePath, 'rb') as fp:
return fp.read()
class TextinOcr(object):
def __init__(self, app_id, app_secret):
self._app_id = app_id
self._app_secret = app_secret
self.host = 'https://api.textin.com'
def recognize_pdf2md(self, image_path, options, is_url=False):
url = self.host + '/ai/service/v1/pdf_to_markdown'
headers = {
'x-ti-app-id': self._app_id,
'x-ti-secret-code': self._app_secret
}
if is_url:
image = image_path
headers['Content-Type'] = 'text/plain'
else:
image = get_file_content(image_path)
headers['Content-Type'] = 'application/octet-stream'
return requests.post(url, data=image, headers=headers, params=options)
if __name__ == "__main__":
# 請登錄后前往 “工作臺-賬號設置-開發者信息” 查看 app-id/app-secret
textin = TextinOcr('#####c07db002663f3b085#####', '######1b1b11a9f9bcd7cc7b######')
# 示例 1:傳輸文件
image = 'file/example.pdf'
resp = textin.recognize_pdf2md(image)
# 示例 2:傳輸 URL
image = 'https://example.com/example.pdf'
resp = textin.recognize_pdf2md(image, True)
離線調用
支持全流程域內服務器處理,提供10萬次起訂的預付費套餐包,使用門檻更低,支持快速集成至現有業務系統。
私有化部署
提供按年付費和買斷機制,支持國產化顯卡適配,讓你放心處理企業內部數據,無懼數據流失。
提交私有化部署需求后,會有專屬服務人員與您聯系和對接。
結語
本文通過使用OmniDocBench提供的評測數據集和方法對TextIn xParse進行了客觀且全面的評測,綜合最終的評測結果來看,TextIn xParse確實是一款能力較強且較為全面的文檔解析工具。而TextIn xParse也考慮到了不同的用戶和場景,提供了多種靈活的集成方式,您可根據具體需求來靈活選擇,非常的友好。