国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網(wǎng)易首頁(yè) > 網(wǎng)易號(hào) > 正文 申請(qǐng)入駐

擼了一個(gè) OCR 大模型對(duì)比工具:DeepSeekOCR、PaddleOCR 和 混元OCR

0
分享至

大家好,我是 Ai 學(xué)習(xí)的老章

最近的 OCR 大模型我都做了本地部署和測(cè)試,還寫(xiě)了一個(gè) API 統(tǒng)一對(duì)接這三個(gè)模型

?
?
??

很多同學(xué)問(wèn)選哪個(gè)?

成年人怎么還在做選擇呢,必須全都要啊

我用 FastAPI 框架擼了一個(gè)簡(jiǎn)單的 OCR 模型對(duì)比工具,可以實(shí)現(xiàn)同樣的提示詞 + 圖片/PDF,利用 Python 多線程并行調(diào)用 DeepSeek、Paddle 和 混元這三個(gè)模型的 API 進(jìn)行解析,并將結(jié)果并排展示。

前端其實(shí)純 HTML+CSS+js 實(shí)現(xiàn),為了內(nèi)網(wǎng)部署,不依賴任何 CND。

使用也很簡(jiǎn)單,圖片/PDF 上傳之后,輸入提示詞,沒(méi)有特殊要求,使用默認(rèn)就行。

點(diǎn)擊 Run OCR Comparison 即可

三者都很快,內(nèi)置了輕量級(jí) Markdown 解析其,自動(dòng)渲染結(jié)果。

也可以切換到識(shí)別后的原始 Markdown,支持一鍵 copy

核心代碼如下(完整代碼接近 600 行,大多是 HTML 相關(guān)):

我這里主要是模型本地部署,內(nèi)網(wǎng)運(yùn)行的,沒(méi)再折騰線上部署。感興趣的同學(xué)可以試試,OCR 模型 API 部分替換成官方/第三方的 API,代碼稍作修改就可以在線部署運(yùn)行了。

#!/usr/bin/env python3
"""
OCR Comparison Web App - 美化版,不依賴外部 CDN
"""
import os
import re
import shutil
import tempfile
import requests
from concurrent.futures import ThreadPoolExecutor

import uvicorn
from fastapi import FastAPI, File, Form, UploadFile
from fastapi.responses import HTMLResponse

app = FastAPI(title="OCR Comparison")

# --- Configuration ---
MODELS = {
"DeepSeek-OCR": "http://localhost:8002/models/v1//deepseek-ocr/inference",
"PaddleOCR": "http://localhost:8003/models/v1/PaddleOCR/inference",
"HunyuanOCR": "http://localhost:8004/models/v1/HunyuanOCR/inference",
}

def call_api(model_name, api_url, file_path, prompt):
"""調(diào)用單個(gè) OCR API"""
print(f"[INFO] Calling {model_name}: {api_url}")
try:
with open(file_path, 'rb') as f:
resp = requests.post(
api_url,
files={'file': (os.path.basename(file_path), f)},
data={'prompt': prompt},
timeout=300
)
print(f"[INFO] {model_name} status: {resp.status_code}")
if resp.status_code == 200:
data = resp.json()
result = data.get("result", str(data))
print(f"[INFO] {model_name} result length: {len(result)}")
return result
returnf"HTTP Error: {resp.status_code}"
except Exception as e:
print(f"[ERROR] {model_name}: {e}")
returnf"Error: {e}"

HTML_PAGE = """

省略

"""

@app.get("/", response_class=HTMLResponse)
asyncdef index():
return HTML_PAGE

@app.post("/api/compare")
asyncdef compare(
file: UploadFile = File(...),
prompt: str = Form("Convert the document to markdown.")
):
print(f"\n{'='*60}")
print(f"[INFO] Received request: {file.filename}")
print(f"[INFO] Prompt: {prompt[:50]}...")
print(f"{'='*60}")
temp_dir = tempfile.mkdtemp()
temp_path = os.path.join(temp_dir, file.filename)
try:
with open(temp_path, "wb") as f:
content = await file.read()
f.write(content)
print(f"[INFO] Saved to: {temp_path}, size: {len(content)} bytes")
# 并行調(diào)用三個(gè) API
results = {}
with ThreadPoolExecutor(max_workers=3) as executor:
futures = {
"deepseek": executor.submit(call_api, "DeepSeek-OCR", MODELS["DeepSeek-OCR"], temp_path, prompt),
"paddle": executor.submit(call_api, "PaddleOCR", MODELS["PaddleOCR"], temp_path, prompt),
"hunyuan": executor.submit(call_api, "HunyuanOCR", MODELS["HunyuanOCR"], temp_path, prompt),
}
for name, future in futures.items():
try:
result = future.result(timeout=310)
results[name] = result
print(f"[INFO] {name} done, length: {len(result)}")
except Exception as e:
results[name] = f"Error: {e}"
print(f"[ERROR] {name}: {e}")
print(f"[INFO] All done. Returning results.")
print(f"[DEBUG] Results keys: {list(results.keys())}")
return results
finally:
shutil.rmtree(temp_dir, ignore_errors=True)

if __name__ == "__main__":
print("\n" + "="*60)
print("OCR Comparison Server")
print("URL: http://0.0.0.0:8080")
print("="*60 + "\n")
uvicorn.run(app, host="0.0.0.0", port=8080)

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(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.

相關(guān)推薦
熱點(diǎn)推薦
敖德薩遭襲,此前澤連斯基變卦、變卦、又變卦

敖德薩遭襲,此前澤連斯基變卦、變卦、又變卦

新民晚報(bào)
2025-12-26 09:03:19
姜昆回應(yīng),視頻為拼接,人一直在國(guó)內(nèi),蹭熱度的楊儀又被打臉了

姜昆回應(yīng),視頻為拼接,人一直在國(guó)內(nèi),蹭熱度的楊儀又被打臉了

李健政觀察
2025-12-26 12:19:52
殲-36雙機(jī)編隊(duì)首飛,用實(shí)力為美國(guó)航母劃下4000公里生死紅線

殲-36雙機(jī)編隊(duì)首飛,用實(shí)力為美國(guó)航母劃下4000公里生死紅線

哲叔視野
2025-12-26 10:26:31
韋瑟斯龐28分青島終結(jié)山西4連勝 王睿澤19分迪亞洛22+4+4

韋瑟斯龐28分青島終結(jié)山西4連勝 王睿澤19分迪亞洛22+4+4

醉臥浮生
2025-12-26 21:33:19
多地黨委主要領(lǐng)導(dǎo)調(diào)整!其中有一人是中央委員

多地黨委主要領(lǐng)導(dǎo)調(diào)整!其中有一人是中央委員

上觀新聞
2025-12-26 13:52:06
50歲佘詩(shī)曼私生活曝光:未婚,身價(jià)過(guò)億,獨(dú)居客廳僅10㎡小破宅,只想當(dāng)個(gè)富婆

50歲佘詩(shī)曼私生活曝光:未婚,身價(jià)過(guò)億,獨(dú)居客廳僅10㎡小破宅,只想當(dāng)個(gè)富婆

黎兜兜
2025-12-25 21:56:18
洪森提出4大;饤l件,泰柬談判失敗,汪文斌終于表態(tài),措辭特殊

洪森提出4大;饤l件,泰柬談判失敗,汪文斌終于表態(tài),措辭特殊

時(shí)時(shí)有聊
2025-12-26 15:09:40
今年圣誕節(jié)沒(méi)人抵制了,為啥還更冷清了?網(wǎng)友:3個(gè)原因,很現(xiàn)實(shí)

今年圣誕節(jié)沒(méi)人抵制了,為啥還更冷清了?網(wǎng)友:3個(gè)原因,很現(xiàn)實(shí)

劍道萬(wàn)古似長(zhǎng)夜
2025-12-25 15:39:57
精準(zhǔn)斬首!泰國(guó)無(wú)人機(jī)斬首行動(dòng)震驚東南亞!洪森指揮鏈遭團(tuán)滅!

精準(zhǔn)斬首!泰國(guó)無(wú)人機(jī)斬首行動(dòng)震驚東南亞!洪森指揮鏈遭團(tuán)滅!

深度報(bào)
2025-12-24 22:47:16
一家五口駕車(chē)在江門(mén)施工棧橋墜江遇難 老家村委會(huì)負(fù)責(zé)人:車(chē)上有7歲小孩和六旬老人

一家五口駕車(chē)在江門(mén)施工棧橋墜江遇難 老家村委會(huì)負(fù)責(zé)人:車(chē)上有7歲小孩和六旬老人

紅星新聞
2025-12-26 13:15:16
加時(shí)18分歷史首人!約基奇56+16+15刷7紀(jì)錄 小丑皇登全美熱搜第一

加時(shí)18分歷史首人!約基奇56+16+15刷7紀(jì)錄 小丑皇登全美熱搜第一

顏小白的籃球夢(mèng)
2025-12-26 14:55:39
央視曝光新毒物!已流竄到全國(guó),長(zhǎng)期食用傷肝腎,孩子淪為重災(zāi)區(qū)

央視曝光新毒物!已流竄到全國(guó),長(zhǎng)期食用傷肝腎,孩子淪為重災(zāi)區(qū)

有范又有料
2025-12-26 12:20:20
徐杰22+5+8+5三分拯救廣東:決戰(zhàn)連中關(guān)鍵三分 率廣東6戰(zhàn)全勝

徐杰22+5+8+5三分拯救廣東:決戰(zhàn)連中關(guān)鍵三分 率廣東6戰(zhàn)全勝

醉臥浮生
2025-12-26 21:40:31
知名熟食品牌致歉,10倍現(xiàn)金補(bǔ)償消費(fèi)者!很多人吃過(guò)

知名熟食品牌致歉,10倍現(xiàn)金補(bǔ)償消費(fèi)者!很多人吃過(guò)

中國(guó)經(jīng)濟(jì)網(wǎng)
2025-12-26 16:28:03
嘉興市原市長(zhǎng)李軍調(diào)任浙江省海洋經(jīng)濟(jì)發(fā)展廳黨組書(shū)記,曾在湖南工作27年

嘉興市原市長(zhǎng)李軍調(diào)任浙江省海洋經(jīng)濟(jì)發(fā)展廳黨組書(shū)記,曾在湖南工作27年

上觀新聞
2025-12-26 20:49:34
俄方最新回應(yīng):戰(zhàn)場(chǎng)上見(jiàn)

俄方最新回應(yīng):戰(zhàn)場(chǎng)上見(jiàn)

魯中晨報(bào)
2025-12-26 13:05:09
佛山企業(yè)家被“以刑化債”后,批辦檢察長(zhǎng)落馬,法官、律師獲罪

佛山企業(yè)家被“以刑化債”后,批辦檢察長(zhǎng)落馬,法官、律師獲罪

追月數(shù)星
2025-12-26 12:09:28
獨(dú)家:南博前院長(zhǎng)徐湖平“監(jiān)守自盜”,工人逆襲院長(zhǎng)發(fā)跡史曝光!

獨(dú)家:南博前院長(zhǎng)徐湖平“監(jiān)守自盜”,工人逆襲院長(zhǎng)發(fā)跡史曝光!

微評(píng)社
2025-12-26 12:59:10
不打了!廣東最大對(duì)手慘遭重創(chuàng),男籃第一中鋒因傷缺陣!

不打了!廣東最大對(duì)手慘遭重創(chuàng),男籃第一中鋒因傷缺陣!

緋雨兒
2025-12-26 16:14:37
從“萬(wàn)輛猛士M817下線”到“登峰行動(dòng)”,猛士品牌的“三新”蛻變

從“萬(wàn)輛猛士M817下線”到“登峰行動(dòng)”,猛士品牌的“三新”蛻變

大眾侃車(chē)
2025-12-26 19:24:00
2025-12-26 22:16:49
機(jī)器學(xué)習(xí)與Python社區(qū) incentive-icons
機(jī)器學(xué)習(xí)與Python社區(qū)
機(jī)器學(xué)習(xí)算法與Python
3235文章數(shù) 11081關(guān)注度
往期回顧 全部

科技要聞

收割3000億!拼多多"土辦法"熬死所有巨頭

頭條要聞

多名中國(guó)女明星已立遺囑 關(guān)之琳無(wú)子將遺產(chǎn)都留給弟弟

頭條要聞

多名中國(guó)女明星已立遺囑 關(guān)之琳無(wú)子將遺產(chǎn)都留給弟弟

體育要聞

開(kāi)翻航母之后,他決定親手造一艘航母

娛樂(lè)要聞

王傳君生病后近照變化大,面部浮腫

財(cái)經(jīng)要聞

投資巨鱷羅杰斯最新持倉(cāng):只留四種資產(chǎn)

汽車(chē)要聞

兩大CEO試駕 華為乾崑*啟境開(kāi)啟首款獵裝轎跑路測(cè)

態(tài)度原創(chuàng)

房產(chǎn)
藝術(shù)
健康
本地
數(shù)碼

房產(chǎn)要聞

炸裂,三亞360億超級(jí)清單發(fā)布,又一批重大配套要來(lái)了!

藝術(shù)要聞

William Dyce:19世紀(jì)蘇格蘭重要的畫(huà)家

這些新療法,讓化療不再那么痛苦

本地新聞

云游安徽|踏訪池州,讀懂山水間的萬(wàn)年史書(shū)

數(shù)碼要聞

千元旗艦封神!哈趣H3 Ultra:巨幕畫(huà)質(zhì)+哈曼音質(zhì)承包全家影音

無(wú)障礙瀏覽 進(jìn)入關(guān)懷版