引言
在構(gòu)建高質(zhì)量的企業(yè)級的智能問答系統(tǒng)的過程中,如何高效精準(zhǔn)地處理企業(yè)已有的海量文檔是大部分開發(fā)者亟待解決的核心痛點。有了高效精準(zhǔn)的文檔解析能力,才能夠構(gòu)建高質(zhì)量的知識庫和高效的信息檢索系統(tǒng),這樣 LLM 才能給用戶更準(zhǔn)確更全面的回答。
Doc2X 簡介
Doc2X 是一款專為開發(fā)者設(shè)計的強(qiáng)大文檔解析產(chǎn)品。
Doc2X 提供 RESTful API 與 SDK 工具包,支持多種開發(fā)語言與框架,讓您輕松將文檔處理功能嵌入現(xiàn)有系統(tǒng),方便快捷地實現(xiàn)將 PDF、掃描件、圖片等多種格式的文檔精準(zhǔn)轉(zhuǎn)換為 Markdown、LaTeX、HTML、Word 等結(jié)構(gòu)化或半結(jié)構(gòu)化格式的能力。
官網(wǎng):https://noedgeai.com/
強(qiáng)大的功能特性
? 市面上類似的文檔解析產(chǎn)品,絕大部分公式識別做的不好(尤其是行內(nèi)和復(fù)雜公式),而 Doc2X 則處于領(lǐng)先水平;
? Doc2X 對表格識別適配優(yōu)秀,甚至支持識別表格里面的圖片和合并跨頁表格等;
? Doc2X 對于多欄識別的閱讀順序還原效果優(yōu)異;
? Doc2X 適配范圍廣相當(dāng)通用,涵蓋財研報、論文、教輔、專利等等;
? 更具體的效果對比可以參考: Doc2x-v1 競品分析(mathpix、庖丁PDFlux、pix2text、合合信息TextIn、騰訊云大模型知識引擎文檔解析)[2]

當(dāng)然,除了提供了快速集成的 API 之外,Doc2X 還提供了友好的操作界面,可以讓你在頁面上快速完成文檔解析,解析完成之后可以對照著原文檔進(jìn)行編輯,確保準(zhǔn)確性。
無縫集成主流工具
Doc2X 已成功接入 FastGPT、CherryStudio、扣子(國內(nèi)版)等知名知識庫和 AI 應(yīng)用構(gòu)建平臺。開發(fā)者可以直接在這些平臺中利用 Doc2X 的強(qiáng)大解析能力,快速搭建和優(yōu)化自己的知識庫應(yīng)用。
Doc2X 解析效果
從 Doc2X 的解析結(jié)果來看,Doc2X PDF 轉(zhuǎn) Markdown 的整體效果是比較出色的,大家可以根據(jù)自己的文檔情況去試用看看效果。
我還是拿《2024少兒編程教育行業(yè)發(fā)展趨勢報告.pdf》這個文檔進(jìn)行解析,相比于 MinerU ,在以下幾方面 Doc2X 做的更出色:
1. 支持多級標(biāo)題的解析(MinerU 只支持一級標(biāo)題解析);

2. 表格識別能力比較強(qiáng),圖片中的表格基本準(zhǔn)確識別出來,而且基本沒有錯位(MinerU 存在無法識別或表格錯位問題);

3. 對于多欄識別的閱讀順序還原效果優(yōu)異(MinerU 對于多欄識別出現(xiàn)了混亂)。

Doc2X API 集成
Doc2X RESTful API 的 Base URL 是 https://v2.doc2x.noedgeai.com,API 調(diào)用流程如下:
Doc2X API 文檔[3]
https://noedgeai.feishu.cn/wiki/Q8QIw3PT7i4QghkhPoecsmSCnG1
接口鑒權(quán)
首先需要獲取到 API Key(類似于sk-xxx
),API Key 獲取網(wǎng)址:https://open.noedgeai.com/。
獲取之后,在 HTTP 請求頭加入:
Authorization: Bearer sk-xxx
文件預(yù)上傳推薦使用該接口, 有更快的上傳速度,大文件上傳接口,文件大小<=1GB。
請求示例:
import json import time import requests as rq base_url = "https://v2.doc2x.noedgeai.com" secret = "sk-xxx" def preupload(): url = f"{base_url}/api/v2/parse/preupload" headers = { "Authorization": f"Bearer {secret}" } res = rq.post(url, headers=headers) if res.status_code == 200: data = res.json() if data["code"] == "success": return data["data"] else: raise Exception(f"get preupload url failed: {data}") else: raise Exception(f"get preupload url failed: {res.text}") upload_data = preupload() print(upload_data)
返回示例:
{ "code":"success", "data":{ "uid":"0192d745-5776-7261-abbd-814df3af3449", "url":"https://doc2x-pdf.oss-cn-beijing.aliyuncs.com/tmp/0192d745-5776-7261-abbd-814df3af3449.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=LTAI5tS7hV6uXXVzcpk3EGfX%2F20241029%2Fcn-beijing%2Fs3%2Faws4_request&X-Amz-Date=20241029T075458Z&X-Amz-Expires=600&X-Amz-SignedHeaders=host&X-Amz-Signature=f731ea8fe4efdd7c727c210034bdcf1a63436c74b295db68f9648efdce576a91" } }
獲取到 url 之后,使用 HTTP PUT 方法上傳文件到返回結(jié)果中的 url 字段,然后使用/api/v2/parse/status
接口輪詢結(jié)果,使用的是阿里云的oss,具體速度取決于您的網(wǎng)速(海外用戶速度可能上傳失敗)。
import json import time import requests as rq base_url = "https://v2.doc2x.noedgeai.com" secret = "sk-xxx" def put_file(path: str, url: str): withopen(path, "rb") as f: res = rq.put(url, data=f) # body為文件二進(jìn)制流 if res.status_code != 200: raise Exception(f"put file failed: {res.text}") defget_status(uid: str): url = f"{base_url}/api/v2/parse/status?uid={uid}" headers = { "Authorization": f"Bearer {secret}" } res = rq.get(url, headers=headers) if res.status_code == 200: data = res.json() if data["code"] == "success": return data["data"] else: raise Exception(f"get status failed: {data}") else: raise Exception(f"get status failed: {res.text}") url = upload_data["url"] uid = upload_data["uid"] put_file("test.pdf", url) whileTrue: status_data = get_status(uid) print(status_data) if status_data["status"] == "success": result = status_data["result"] withopen("result.json", "w") as f: json.dump(result, f) break elif status_data["status"] == "failed": detail = status_data["detail"] raise Exception(f"parse failed: {detail}") elif status_data["status"] == "processing": # processing progress = status_data["progress"] print(f"progress: {progress}") time.sleep(3)
文件預(yù)上傳流程圖如下:
請求導(dǎo)出文件
通過/api/v2/parse/status
接口輪詢結(jié)果完成之后,需要通過 /api/v2/convert/parse
接口觸發(fā)導(dǎo)出文件任務(wù)。
請求示例:
import requests import json url = "https://v2.doc2x.noedgeai.com/api/v2/convert/parse" headers = { "Authorization": "Bearer sk-xxx", "Content-Type": "application/json", } data = { "uid": "01920000-0000-0000-0000-000000000000", "to": "md", "formula_mode": "normal", "filename": "my_markdown.md", } response = requests.post(url, headers=headers, data=json.dumps(data)) print(response.text)
返回示例:
// 進(jìn)行中 { "code":"success", "data":{ "status":"processing", "url":"" } }
導(dǎo)出獲取結(jié)果通過/api/v2/convert/parse
接口觸發(fā)導(dǎo)出文件任務(wù)后,需要通過/api/v2/convert/parse/result
接口輪詢導(dǎo)出文件任務(wù)狀態(tài),成功之后會返回文件 URL。
請求示例:
import requests url = 'https://v2.doc2x.noedgeai.com/api/v2/convert/parse/result?uid=01920000-0000-0000-0000-000000000000' headers = {'Authorization': 'Bearer sk-xxx'} response = requests.get(url, headers=headers) print(response.text)
返回示例:
{ "code":"success", "data":{ "status":"success", "url":"https://doc2x-backend.s3.cn-north-1.amazonaws.com.cn/objects/01927a3a-eeb0-74f6-a539-ca35916b772e5/convert_tex_none.zip?X-Amz-Algorithm=AWS4-HMACSHA256&X-Amz-Credential=AKIATKXFISLI52PK3HTP%2F20241011%2Fcn-north-1%2Fs3%2Faws4request&X-Amz-Date=20241011075617Z&X-Amz-Expires=300&X-Amz-SignedHeaders=host&&x-id=GetobjectX-Amz-Signature=05bdd04a668e9924c5fd361999728cee35aaefb2087334a403f6ebf5ba93f786f" } }
下載文件從/api/v2/convert/parse/result
接口獲得文件 URL 后就可以通過 HTTP GET 方法請求 URL 來下載文件。
請求示例:
import requests response = requests.get("https://doc2x-backend.s3.cn-north-1.amazonaws.com.cn/objects/01927a3a-eeb0-74f6-a539-ca35916b772e5/convert_tex_none.zip?X-Amz-Algorithm=AWS4-HMACSHA256&X-Amz-Credential=AKIATKXFISLI52PK3HTP%2F20241011%2Fcn-north-1%2Fs3%2Faws4request&X-Amz-Date=20241011075617Z&X-Amz-Expires=300&X-Amz-SignedHeaders=host&&x-id=GetobjectX-Amz-Signature=05bdd04a668e9924c5fd361999728cee35aaefb2087334a403f6ebf5ba93f786f") withopen('downloaded_file.zip', 'wb') as f: f.write(response.content)
結(jié)語本文給大家再介紹了一款優(yōu)秀強(qiáng)大的文檔解析產(chǎn)品 - Doc2X,通過實踐表明 Doc2X 確實具有優(yōu)秀的表現(xiàn),可以作為大家在建設(shè)文檔解析系統(tǒng)的候選工具,也期望通過我的介紹能給大家提供更多的選擇和思路。
引用鏈接
[1]
Doc2X: https://noedgeai.com/[2]
Doc2x-v1 競品分析(mathpix、庖丁PDFlux、pix2text、合合信息TextIn、騰訊云大模型知識引擎文檔解析): https://noedgeai.feishu.cn/wiki/K1NGwjuuqiI9nukgapEcUAALnLh?from=from_copylink[3]
Doc2X API 文檔: https://noedgeai.feishu.cn/wiki/Q8QIw3PT7i4QghkhPoecsmSCnG1
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.