利用合成數據構建快速多語言 OCR 模型

利用合成數據構建快速多語言 OCR 模型

Huggingface·

AI 生成摘要

輝達推出了 Nemotron OCR v2,這是一款利用 1200 萬張合成訓練圖像開發的高性能多語言模型,在多種語言中實現了卓越的準確度與處理速度。

利用合成數據構建快速多語言 OCR 模型

合成數據生成為權衡難題提供了解決方案。透過程式化地將文本渲染到圖像上,我們既能獲得網路爬蟲的規模,又能獲得人工標註的標籤純度。每個邊界框、轉錄文本和閱讀順序關係都是精確已知的,因為是我們將其放置在那裡的,並且我們能完全控制訓練集中出現的佈局、字體樣式和邊緣案例。挑戰在於真實感。模擬多樣化的佈局和真實的文檔場景非常困難,但透過正確的渲染引擎以及在字體、顏色、背景、增強和佈局結構上的強隨機化,可以構建足夠的不變性,使在合成數據上訓練的模型能很好地泛化到真實世界的文檔。

利用這種方法,我們構建了 Nemotron OCR v2,這是一款既準確又快速的多語言 OCR 模型。準確性由數據驅動:涵蓋六種語言的 1,200 萬張合成訓練圖像,將非英語語言的 NED 分數從 0.56–0.92 降低到 0.035–0.069。速度由架構驅動:共享的檢測骨幹網絡特徵被識別器和關係模型共同複用,消了冗餘計算,並在單張 A100 GPU 上實現了每秒 34.7 頁的處理速度。合成數據流水線具有足夠的通用性,可以擴展到任何擁有字體和源文本的語言。

該數據集已在 nvidia/OCR-Synthetic-Multilingual-v1 公開,模型位於 nvidia/nemotron-ocr-v2。您可以直接在瀏覽器的 Nemotron OCR v2 演示中嘗試該模型。

Nemotron OCR v2 HuggingFace Space 演示,顯示檢測到的文本區域和提取的文本

問題所在:數據而非架構

Nemotron OCR v1 是一款強大的英語 OCR 模型,但它並非為多語言目的而訓練,因此在處理其他語言時無法準確讀取文檔。在我們的 SynthDoG 基準測試中,v1 對日語、韓語、俄語和中文生成的歸一化編輯距離 (NED) 分數在 0.56 到 0.92 之間。在這種錯誤率下,模型輸出與真實標籤幾乎沒有相似之處。

部分問題在於字符集。v1 模型僅支持 855 個字符,根本無法涵蓋 CJK(中日韓)或西里爾字母。我們進行了一項實驗,將字符集擴展到 14,244 個字符以涵蓋所有目標語言。這雖然略有幫助,但如果沒有包含這些字符的充足訓練數據,改進微乎其微。模型理論上可以輸出正確的字符,但它從未學習過它們的樣子。瓶頸在於數據,而非架構。

收集並標註數百萬張涵蓋六種語言、具有單詞、行和段落級邊界框以及閱讀順序圖的真實圖像,成本高昂到令人望而卻步。我們需要一種不同的方法。

通用的合成數據流水線

我們的核心洞察是,多語言 OCR 訓練數據的配方在根本上是與語言無關的。你需要兩個要素:

有了這些,合成渲染器就可以免費生成無限量、在各個粒度層級都具有像素級精確標籤的標註訓練圖像。

文本:mOSCAR

對於源文本,我們使用 mOSCAR,這是一個大規模的多語言網路語料庫,涵蓋了 163 個語言子集,涉及數十種腳本,包括拉丁字母、CJK、西里爾字母、阿拉伯字母、天城文和泰文。從 mOSCAR 中採樣使我們獲得的文本在每種語言的詞彙、句子長度和字符頻率上都遵循真實分佈。這比字典單詞列表或機器生成的文本更具代表性。

渲染:改進版 SynthDoG

我們在 Donut 項目的 SynthDoG(合成文檔生成器)重度修改版基礎上構建了流水線。原始的 SynthDoG 生成具有頁面級文本標籤的類文檔圖像。我們在幾個重要方面對其進行了擴展。

多層級邊界框。 原生 SynthDoG 僅提供頁面級文本。我們的流水線同時生成三個層級的像素級精確標註:單詞、行和段落。每個層級都包含軸對齊邊界框和 4 點四邊形,並帶有將單詞鏈接到其所屬行和段落的索引。

用於閱讀順序的關係圖。 大多數公開的 OCR 數據集不包含閱讀順序標註。這使得訓練能夠理解文檔結構(而不僅僅是檢測文本)的模型變得很困難。我們從 HierText 數據集中汲取靈感,該數據集開創了具有結構關係的分層(單詞、行、段落)標註。我們的合成流水線為每個樣本生成一個關係圖,編碼哪些單詞組成每一行,哪些行組成每個段落,以及它們應該以什麼順序閱讀。這正是驅動 Nemotron OCR v2 關係模型組件的核心,它處理多欄佈局、表格和其他結構,在這些結構中,簡單的從上到下、從左到右的合併會產生混亂的輸出。

多樣化的佈局模式。 我們創建了一組佈局模板,涵蓋了一系列真實世界的文檔場景:流動的多欄文本、分散的類場景文本單詞、垂直文本列(對日語和中文很重要)、帶有標題和邊框的表格、帶有點狀引導線的目錄頁、PowerPoint 風格的幻燈片,以及帶有標題和正文的 Word 文檔風格頁面。每次生成運行都會隨機選擇一種佈局模式,因此模型在訓練期間會看到各種各樣的結構。

針對 CJK 的行級識別。 多語言版本的一個重要設計決策是從單詞級文本識別轉向行級識別。像中文和日語這樣的語言在單詞之間不使用空格,因此沒有自然的單詞邊界可以進行分割。韓語使用空格的情況並不一致。透過在行級進行操作,識別器可以自然地處理這些語言,而不需要單獨的單詞分割步驟。英語版本在合理的情況下繼續使用單詞級識別。

開源字體池。 我們從包括 Google Fonts 和 Noto 家族在內的開源集合中,為每種語言收集了 165 到 1,258 種獨特字體,涵蓋襯線、無襯線、手寫、裝飾和可變粗細樣式。

數據增強。 每個渲染的頁面都會經過一疊隨機增強以提高泛化能力。在文本層面,這些包括邊框/輪廓效果、投影、擠壓以及字形邊緣的灑水噪聲。自定義效果利用隨機場調節文本的筆畫透明度和筆畫寬度變化。在圖像層面,我們應用形態學操作(膨脹、腐蝕)、中值模糊和彈性扭曲,並由最小文本高度控制,以避免破壞微小文本。在全頁層面,流水線應用對比度和亮度抖動、高斯和運動模糊、色彩偏移、陰影疊加和加性高斯噪聲。背景可以是圖像紋理或純色,並可在單個單詞或行後面添加可選的半透明有色矩形。

數據樣貌

以下是涵蓋所有六種語言的原始合成圖像樣本。每張圖像都是使用隨機佈局模式、字體選擇、背景和增強組合生成的:

所有語言合成訓練圖像的馬賽克圖

下方是一個顯示分層結構的標註示例。虛線輪廓表示段落邊界,陰影區域顯示行級分組(按段落著色),箭頭追蹤每個段落內行之間的閱讀順序。

帶有閱讀順序標註的英語段落佈局

這裡有更多跨語言的標註示例,展示了流水線生成的佈局、腳本和增強樣式的範圍。每個副標題描述了該示例突出的重點:

跨語言和佈局類型的標註示例

數據集概覽

完整數據集包含 1,220 萬個樣本,涵蓋六種語言:

下載:nvidia/OCR-Synthetic-Multilingual-v1

可擴展性

我們描述的流水線是有意設計為通用的。我們在本次發布中選擇了六種語言,但添加新語言僅需要源文本和涵蓋該腳本的字體。不需要更改模型架構或進行人工標註。渲染流水線可以在單台機器上每天生成數百萬個標註頁面,這使得快速為新語言生產大規模訓練集變得切實可行。隨著 mOSCAR 涵蓋 163 個語言子集,以及 Noto 字體家族支持幾乎所有正在使用的 Unicode 腳本,廣泛擴展此方法的路徑非常清晰。

模型:Nemotron OCR v2

Nemotron OCR v2 是一款生產就緒、可商業使用的 OCR 模型,在這些合成數據以及約 68 萬張真實圖像上訓練而成。它採用三組件端到端架構:

提供兩個版本:

與其他 OCR 流水線的一個重要區別:Nemotron OCR v2 多語言版是一個單一的統一模型,可同時處理所有五種語言。您不需要提前知道文檔語言或選擇特定語言的版本。相比之下,像 PP-OCR v5 (PaddleOCR) 和 OpenOCR 這樣的流水線工具提供專門的每語言模型,雖然在目標語言上表現良好,但需要您先檢測語言,或者退而求其次使用在各方面能力較弱的基礎版本。

為什麼模型速度快

其架構基於 FOTS (Fast Oriented Text Spotting) 設計,將檢測和識別統一到一個具有共享卷積骨幹網絡的單一網絡中。檢測骨幹網絡 (RegNetX-8GF) 處理一次輸入圖像,並生成被所有三個組件複用的特徵圖。文本識別器接收來自檢測區域的校正特徵裁剪塊,並使用小型 Transformer 進行解碼。關係模型使用緊湊的 Transformer 編碼器,對源自相同特徵圖的區域嵌入進行推理。由於昂貴的卷積過程僅發生一次,下游組件增加的開銷極小。這種特徵複用是驅動模型效率的核心,使其在單張 A100 GPU 上能達到每秒 34.7 頁的速度。

結果:合成數據帶來了什麼

多語言基準測試 (SynthDoG)

SynthDoG 生成頁面上的歸一化編輯距離(越低越好)。在我們的合成數據上訓練的 v2 多語言模型,將所有目標語言的 NED 分數從無法使用的水平降低到接近於零:

請注意,「PaddleOCR (專門版)」列使用的是特定語言的模型(例如,韓語使用韓語模型),這是已知語言時的最佳情況。Nemotron OCR v2 多語言版在這些合成數據上取得的結果,甚至優於這些專門版本,且僅使用單一模型。

真實世界基準測試 (OmniDocBench)

在 OmniDocBench(一個包含英文、中文和混合語言內容的真實文檔 OCR 基準測試)上,Nemotron OCR v2 多語言版以每秒 34.7 頁的速度實現了極具競爭力的準確性,比 PaddleOCR v5 快 28 倍以上:

NED 分數(越低越好)。速度是在單張 A100 GPU 上使用 v2 批處理流水線測得的。所有對比模型均使用其默認的檢測器 + 識別器流水線進行基準測試,並禁用了可選的額外功能。

關於版本間速度差異的說明:v1 和 v2 英語版比 v2 多語言版快,因為多語言識別器更大(6 層 Transformer 和 14,244 個標記的詞彙表,而英語版為 3 層和 855 個標記)。識別器處理每個檢測到的文本區域,因此較重的識別器會直接影響文本密集頁面的吞吐量。v2 英語模型比 v1 稍快,因為骨幹網絡已從 RegNetY 更換為 RegNetX。

連結

致謝

感謝 Bo Liu、Théo Viel 和 Mike Ranzinger 為這項工作貢獻的代碼、策略和額外驗證。

本文提到的模型 1

本文提到的數據集 2

更多來自此作者的內容

NVIDIA Isaac GR00T N1.7:用於人形機器人的開放推理 VLA 模型

在一天內構建特定領域的嵌入模型

社群

· 註冊或登錄以發表評論

本文提到的模型 1

本文提到的數據集 2

Huggingface

相關文章

其他收藏 · 0

收藏夾