微調語言模型,讓它更懂你的文件:我們如何打造專屬支票結構化助手

微調語言模型,讓它更懂你的文件:我們如何打造專屬支票結構化助手

你是否也曾經遇過這樣的狀況?OCR (光學字元辨識;Optical Character Recognition)雖然能幫你把支票轉成文字內容,但轉出來的結果還是得靠人眼一欄一欄去看、去整理,才能填進後續系統裡。這類資料輸入的工作不難,但非常耗時。尤其是文件格式固定、欄位重複性高的情況,其實是最適合交給 AI 模型處理的場景。

我們最近實作了一個任務:讓語言模型讀懂 AI OCR 後的支票內容,並自動輸出成 JSON 結構,直接可供系統使用。

零、模型其實「看得懂支票」,但不一定「照你要的方式輸出」

目前主流的語言模型(像 GPT-4ClaudeLLaMA 3 等)其實都有能力理解文件內容,也能萃取關鍵資訊。但問題是:

  • 它們不一定知道你的欄位命名規則
  • 它們的輸出格式不一定一致(有時少引號、有時換行錯誤)
  • 它們不知道哪些欄位是必填、哪些可以為空
  • 它們對於手寫字體的處理

這些細節,才是讓模型「能夠真正被整合進系統」的關鍵。

一、微調(fine-tuning)模型,就像幫它做企業內訓

我們整理了不到 500 筆支票範例,用標準格式把「輸入是什麼」、「你要的輸出長怎樣」講清楚。

例如:

  • 輸入:
支票號碼:12345678 
金額:新台幣壹萬元整 
出票日期:2024年6月1日 
受款人:王小明
  • 輸出:
{    "支票號碼": "12345678", 
    "金額": "新台幣壹萬元整", 
    "出票日期": "2024-06-01", 
    "受款人": "王小明" 
}

資料數量不多,但我們發現:

  • 一致的格式(特別是欄位順序與標點)對模型效果有明顯影響
  • 每筆樣本的指令語氣與上下文設計,會影響模型學到的穩定性
  • 使用 instruction / input / output 分離式格式,有助於維持泛化能力

此外,我們嘗試了不同模型尺寸與指令風格(如 alpaca vs chatml),發現LLaMA 3 Instruct 風格的指令結構效果最佳,能穩定學習任務目標。

二、輸出效果穩定,適合接入後端流程(使用指令式微調技巧)

完成微調後的模型具備以下特性:

  • 輸出為標準 JSON 格式,可直接對接程式或存為 Excel
  • 欄位順序與命名一致,不需要額外清洗
  • 可容錯常見 OCR 錯字或欄位變形(如換行、冒號不齊)

為了確保輸出品質,我們在訓練資料與 prompt 裡也做了幾件事:

  • 指令中明確要求「只輸出 JSON,不要加其他說明」
  • 用 response template 框住回答區段,搭配 DataCollatorForCompletionOnlyLM
  • 針對常見錯誤(如少逗號、漏大括號)加強訓練樣本覆蓋

除此之外,我們也採用了目前 Hugging Face 社群中常見的一種技巧 —— DataCollatorForCompletionOnlyLM

這個工具可以讓模型「只學回答的部分」,忽略掉 prompt 的內容(像是 ### 指令:### 輸入:),這樣訓練出來的模型輸出格式更乾淨,也更穩定。

對於像 JSON 結構化輸出這類任務來說,這種做法有助於避免模型輸出多餘文字或格式錯誤,是目前指令式微調中非常常見且實用的處理方式。

範例流程如下:

支票照片 → 微調後的模型 → JSON 結構資料 → ERP / 財務系統

這樣的流程能達到幾乎零人工後處理,尤其對於大量處理票據或表單的單位來說,是一種可直接導入的解法。

三、這樣的做法能不能複製到其他任務上?

我們覺得可以。支票只是起點,任何格式明確、結構穩定的文件,其實都可以用類似方式做微調,例如:

  • 合約條款萃取與分類(例如:租期、付款方式、違約條款)
  • 醫療診斷書欄位抽取(診斷項目、醫師、病人資訊)
  • 財報資料自動轉換(轉成表格格式、導入 BI 工具)
  • 收據/報名表/發票/出貨單等高頻表單

重點不是模型多強,而是資料夠清楚、格式夠一致。透過少量樣本就能「指定任務」,這就是微調模型的最大價值。

這類流程我們嘗試將其模組化為: 微調模型 → 結構輸出 → 結果應用,可以彈性接入前後段不同平台。

四、模型面對錯字、缺欄與欄位順序打亂時表現如何?

為了讓這個模型在真實資料上有容錯能力,我們設計了幾種測試情境:

  1. 欄位順序打亂: 我們發現模型能正確辨認欄位意義而非仰賴固定順序。即使受款人出現在最上方、金額壓在最下方,模型仍能照正確格式輸出 JSON。
  2. 欄位缺漏: 在輸入中省略如「出票日期」的情況,模型傾向輸出缺該欄位的 JSON,而非亂補。這符合我們希望它「只抽有資料者」的預期行為。
  3. OCR 錯字容忍: 模型對於一些常見的錯別字如「壹萬圓整」、「收款人」被誤辨為「受貫人」,仍能靠上下文語意理解補足,並正確映射到目標欄位。

這類測試幫助我們評估了模型對實務輸入的適應能力,發現比起 prompt 工程,更關鍵的是高質量多樣的訓練樣本與標準輸出格式的設計


五、結語

語言模型的能力並不只限於聊天。在處理半結構或非結構化的文件時,它可以扮演一個很靈活的資料橋梁。

我們這次的嘗試,讓我們更理解一件事:

模型本身很好用,但只有當它理解你的內容、格式與工作邏輯時,它才真正變成「能用」。

如果你手邊也有類似資料,可以試著從少量標記資料開始了解微調的流程與效果。不過我們也發現,雖然現在微調工具越來越普及,要讓模型穩定產出、格式正確,仍需要良好的資料設計與錯誤處理經驗,所以將這部分交給韜睿軟體,將省去您不少的時間,讓資料截取更正確.

Loading

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *