成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

RAG系列:解析優化 - 使用 Doc2X 將 PDF 高效轉換為 Markdown

人工智能 開發
本文給大家再介紹了一款優秀強大的文檔解析產品 - Doc2X,通過實踐表明 Doc2X 確實具有優秀的表現,可以作為大家在建設文檔解析系統的候選工具,也期望通過我的介紹能給大家提供更多的選擇和思路。

引言

在構建高質量的企業級的智能問答系統的過程中,如何高效精準地處理企業已有的海量文檔是大部分開發者亟待解決的核心痛點。有了高效精準的文檔解析能力,才能夠構建高質量的知識庫和高效的信息檢索系統,這樣 LLM 才能給用戶更準確更全面的回答。

RAG系列(七):解析優化 - 不同文件類型統一轉換成Markdown中我們介紹了一款開源的文檔解析工具 - MinerU,今天再給大家介紹一款優秀強大的文檔解析產品 - Doc2X[1]

Doc2X 簡介

Doc2X 是一款專為開發者設計的強大文檔解析產品。

Doc2X 提供 RESTful API 與 SDK 工具包,支持多種開發語言與框架,讓您輕松將文檔處理功能嵌入現有系統,方便快捷地實現將 PDF、掃描件、圖片等多種格式的文檔精準轉換為 Markdown、LaTeX、HTML、Word 等結構化或半結構化格式的能力。

官網:https://noedgeai.com/

圖片

強大的功能特性

  • 市面上類似的文檔解析產品,絕大部分公式識別做的不好(尤其是行內和復雜公式),而 Doc2X 則處于領先水平;
  • Doc2X 對表格識別適配優秀,甚至支持識別表格里面的圖片和合并跨頁表格等;
  • Doc2X 對于多欄識別的閱讀順序還原效果優異;
  • Doc2X 適配范圍廣相當通用,涵蓋財研報、論文、教輔、專利等等;
  • 更具體的效果對比可以參考:Doc2x-v1 競品分析(mathpix、庖丁PDFlux、pix2text、合合信息TextIn、騰訊云大模型知識引擎文檔解析)[2]

圖片

友好的操作界面

當然,除了提供了快速集成的 API 之外,Doc2X 還提供了友好的操作界面,可以讓你在頁面上快速完成文檔解析,解析完成之后可以對照著原文檔進行編輯,確保準確性。

無縫集成主流工具

Doc2X 已成功接入 FastGPT、CherryStudio、扣子(國內版)等知名知識庫和 AI 應用構建平臺。開發者可以直接在這些平臺中利用 Doc2X 的強大解析能力,快速搭建和優化自己的知識庫應用。

圖片

Doc2X 解析效果

從 Doc2X 的解析結果來看,Doc2X PDF 轉 Markdown 的整體效果是比較出色的,大家可以根據自己的文檔情況去試用看看效果。

我還是拿《2024少兒編程教育行業發展趨勢報告.pdf》這個文檔進行解析,相比于 MinerU ,在以下幾方面 Doc2X 做的更出色:

1. 支持多級標題的解析(MinerU 只支持一級標題解析);

圖片

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

圖片

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

圖片

Doc2X API 集成

Doc2X RESTful API 的 Base URL 是 https://v2.doc2x.noedgeai.com,API 調用流程如下:

圖片

Doc2X API 文檔[3]https://noedgeai.feishu.cn/wiki/Q8QIw3PT7i4QghkhPoecsmSCnG1

接口鑒權

首先需要獲取到 API Key(類似于sk-xxx),API Key 獲取網址:https://open.noedgeai.com/。

獲取之后,在 HTTP 請求頭加入:

Authorization: Bearer sk-xxx

文件預上傳

推薦使用該接口, 有更快的上傳速度,大文件上傳接口,文件大小<=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 方法上傳文件到返回結果中的 url 字段,然后使用/api/v2/parse/status 接口輪詢結果,使用的是阿里云的oss,具體速度取決于您的網速(海外用戶速度可能上傳失敗)。

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為文件二進制流
        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)

文件預上傳流程圖如下:

圖片

請求導出文件

通過/api/v2/parse/status 接口輪詢結果完成之后,需要通過 /api/v2/convert/parse接口觸發導出文件任務。

請求示例:

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)

返回示例:

// 進行中
{
    "code": "success",
    "data": {
        "status": "processing",
        "url": ""
    }
}

導出獲取結果

通過/api/v2/convert/parse接口觸發導出文件任務后,需要通過/api/v2/convert/parse/result接口輪詢導出文件任務狀態,成功之后會返回文件 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")

with open('downloaded_file.zip', 'wb') as f:
    f.write(response.content)

結語

本文給大家再介紹了一款優秀強大的文檔解析產品 - Doc2X,通過實踐表明 Doc2X 確實具有優秀的表現,可以作為大家在建設文檔解析系統的候選工具,也期望通過我的介紹能給大家提供更多的選擇和思路。

引用鏈接

[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

責任編輯:龐桂玉 來源: 燃哥講AI
相關推薦

2019-07-30 10:51:45

Markdown格式化文檔Linux

2025-06-03 08:50:24

RAGMarkdown

2025-06-10 04:30:00

2021-10-29 15:13:21

LinuxPDF文件

2009-07-29 10:24:52

HTM轉換為PDF

2021-09-04 17:26:31

SpringBoot轉換器參數

2023-05-05 00:19:22

2023-08-25 14:47:56

TransFLACFLAC

2009-12-03 16:30:24

PHP代碼解析損耗

2018-12-03 12:48:18

MDwikiMarkdownHTML

2024-02-05 14:12:37

大模型RAG架構

2022-11-01 16:20:56

Java圖像文件圖像文件類型

2024-09-19 09:12:50

RAG系統技術

2009-07-15 16:56:59

Jython類型Java類型

2023-08-26 16:06:10

COBOLJava數據

2010-05-19 16:31:09

IBM System

2010-08-03 16:54:10

DB2 9.5

2014-05-04 12:51:21

Javascript編譯器

2017-05-25 15:14:36

2020-08-20 09:30:26

Python音頻文本格式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 视频1区2区 | 国产精品久久久久久久久久久久 | 国产精品久久亚洲7777 | 我我色综合 | 亚洲午夜视频在线观看 | 玖玖玖在线观看 | 免费在线观看成年人视频 | 伊人狠狠干| 久久综合狠狠综合久久综合88 | 日韩av免费看 | 九九久久在线看 | 久视频在线观看 | 日韩a视频| 欧美理伦片在线播放 | 国产成人精品一区二区三区 | 久久久91精品国产一区二区三区 | 黑人巨大精品欧美一区二区免费 | 人人爽日日躁夜夜躁尤物 | av手机免费在线观看 | 精品综合网 | 亚洲风情在线观看 | 天堂成人国产精品一区 | 色狠狠桃花综合 | 日韩一级电影免费观看 | 久久99精品国产 | 天天天天操 | 久久一区二 | 欧美aaaaaaaa | 中文字幕第二十页 | 欧美成人精品一区二区三区 | 国产精品视频一区二区三区 | 夜夜草导航 | 国产免费一区二区 | 午夜激情视频在线 | 夜久久| 一区二区三区精品 | 国产精品久久久久久久久久久久久 | 成人毛片视频免费 | 日本成人福利视频 | 欧美视频成人 | 精品视频一区二区三区四区 |