技術文章 · 企業 AI 導入

從 OCR 到智慧文件處理:讓 AI 自動讀懂你的發票與合約

傳統 OCR 只把字認出來,卻不懂哪串數字是金額;智慧文件處理(IDP)用視覺語言模型讀懂版面與欄位關係。這篇從一張認錯金額的發票講起,拆解 OCR 為何錯得安靜、欄位準確率該怎麼驗、統編與稅額如何自動檢核、信心門檻怎麼設才不塞爆人工,以及關鍵欄位為何一定要留人。

作者 Steve Chen · 發布  · 更新  · 約 7 分鐘閱讀

企業 AI 導入 — 廷皓技術專欄插圖

帳對不起來,差了三萬七千元。台南一家貿易公司的會計為了這筆差額連加兩天班,一張一張憑證往回翻,最後揪出兇手:一張掃描時歪了大概五度的進貨發票,自動辨識系統把金額欄的「7」認成「1」,三萬多塊就這樣憑空蒸發、悄悄寫進了帳裡。更嘔的是,這家公司半年前才風風光光宣布導入「AI 自動讀發票」。再往下追,真相其實不複雜——他們買的是一套傳統 OCR 加上寫死的欄位模板,問題從頭到尾不是「AI 太笨」,而是那套東西根本還算不上今天大家在講的 AI。

傳統 OCR 為什麼錯得這麼安靜

傳統 OCR(光學文字辨識)的骨架,其實是一條影像處理流水線:先做前處理,把影像去雜訊、二值化,順便把歪斜的頁面轉正;接著做版面切割,切出一塊塊文字區域;最後逐字比對辨識,吐出一串「字」。請注意,它輸出的只是「字」——一串沒有身分的字元序列。它完全不知道哪一串數字是金額、哪一串是統編、哪一串是日期。

那字怎麼對應到欄位?靠人。工程師事先寫死一堆規則:「金額在頁面右下角某個座標範圍」「統編在抬頭下方第二行」。這種座標模板在單一版型上跑得好好的,可是只要供應商換一張發票版型,或掃描時整頁位移幾公分,規則對到的位置就整個跑掉。掃描歪一點、印章壓到字、傳真再影印糊掉一角,逐字辨識當場出錯。衡量傳統 OCR 好壞的老指標是字元錯誤率與詞錯誤率,這兩個數字說穿了都只在乎「字認得對不對」,從來不管「這個字放進了對的欄位沒有」。

最要命的是它「錯得很安靜」。傳統 OCR 把「7」讀成「1」時,不會舉手說我沒把握,它一樣理直氣壯把 1 寫進系統,沒有任何警示、沒有任何信心標記。錯誤就這樣潛伏在帳裡,一路睡到月底對帳才被引爆,而那時候你要回頭翻的,是整整一個月、成百上千張憑證。開頭那筆三萬七,就是這樣熬出兩天加班的。

智慧文件處理(IDP)到底聰明在哪

這幾年的主流做法叫智慧文件處理(IDP,Intelligent Document Processing),它的核心引擎是視覺語言模型。跟傳統 OCR 最大的差別在於:它不是先認字、再套座標,而是同時「看」影像的畫面和文字的位置關係,用一個多模態的模型把兩者一起理解。講白話,它讀得懂版面語意——它知道「總計」這兩個字是一個標籤,知道標籤右邊那串數字跟它是一組的,於是直接輸出一份結構化欄位:統編、品名、數量、未稅額、稅額、總計,一格一格對應清楚,而且每個欄位還附上一個信心分數。

不同模型、資料集、提示、判分方式與正式流量,結果可能差很多。公開 benchmark 只能用來理解方法,不能直接當成專案承諾;驗收應使用公司自己的題庫,分別記錄正確率、引用支持率、拒答、延遲、成本與人工覆核量。

但話說回來,也別把它神化。同一批模型丟到雜亂、多結構、印刷品質參差的真實文件上,抽取的完整正確率可能只落在四到七成之間——這不是模型爛,而是提醒你:那些漂亮的評測數字是在乾淨資料集上跑出來的,你家檔案櫃裡那些歪斜、蓋章、手寫加註的憑證是另一個世界。把期望值設在正確的位置,後面的驗收才不會失真。

信心分數,是整條自動化的閥門

IDP 相對傳統 OCR 還有一個關鍵優勢:每個抽出來的欄位,它都會附一個信心分數。這個分數就是整條自動化流程的閥門——分數高過門檻的自動過帳,分數低於門檻的攔下來丟給人工確認。一開一關之間,就是「省人力」和「守品質」之間那條你可以親手調的線。傳統 OCR 沒有這個閥門,所以它只能全對或全錯地矇著眼睛往前衝;IDP 至少會在沒把握的時候舉手。這道閥門的門檻該設在哪、設高設低各有什麼代價,後面我們專門拉一段來談。

準確率,要用你家最醜的文件來驗

驗收 IDP,第一條原則:別用廠商準備的乾淨樣本。那些樣本是拿來成交的,不是拿來反映你日常的。去檔案櫃裡翻五十張最醜的——掃描歪斜的、傳真再影印的、蓋了三個章的、邊角有手寫註記的——拿這批來測,測出來的數字才是你上線後每天要面對的真相。很多導入案上線後之所以「說好的自動化怎麼還在人工」,根源就在驗收時拿乾淨樣本自我感覺良好。

別被字元準確率騙了,要看欄位準確率

這裡有個很多人踩的坑:把「字元準確率」當成驗收指標。廠商說 99% 聽起來很漂亮,但你算一下——一張發票假設有兩百個字元,99% 的字元準確率,意味著平均每張還是會錯兩個字。錯在品名的第三個字,無傷大雅;錯在金額或統編,整筆帳就毀了。所以真正該量的是欄位層級的準確率:金額這一欄,整欄一字不差才算對,錯一位就算整欄錯。用這個嚴格定義去驗,你才知道系統在「要命的欄位」上到底幾分。字元準確率和欄位準確率是兩個世界,別再混為一談。

掃描品質是地基,300 dpi 是底線

台灣的商業文件,天生自帶驗算空間

好消息是,比起純靠模型的信心分數,台灣的商業文件本身就藏了好幾道可以用程式硬驗的邏輯。把這些驗算寫進流程,等於在模型之外再加一層安全網,很多錯誤根本出不了門。

  • 統一編號有檢核碼:統編固定八碼、全是數字,而且不是隨便編的。它的驗算邏輯,是把八位數各自乘上一組固定權重 [1,2,1,2,1,2,4,1],再把每個乘積的十位數與個位數相加,最後全部加總。舊制看這個總和能不能被 10 整除,財政部自 2023 年起逐步改為以能被 5 整除為準;當第七碼是 7 時還有個特例,總和加一後再驗一次也算通過。你不必背這串邏輯,重點是——抽出來的統編可以當場用程式驗真偽,一驗不過就立刻攔下。
  • 稅額和銷售額有固定比例:營業稅率是 5%,所以「稅額大約等於未稅銷售額乘以百分之五」這條,可以拿來交叉核對。模型如果把稅額欄看歪了,這道驗算會第一時間把它叫出來。
  • 小計要能加回總計:各品項的金額加總,理論上要等於發票總計。加不回去,就代表某個數字被讀錯了,同樣自動轉人工。

這幾條檢核不花什麼工,卻能把「錯得很安靜」變成「錯得很吵」——只要驗不過就跳警示、轉人工,錯誤在進系統前就被攔住,而不是等到月底對帳才引爆。導入 IDP 真正的價值,往往不只在那顆模型,而在你願不願意把這些領域驗算包在它外面。

信心門檻怎麼設,才不會反過來塞爆人工

比較務實的目標,是把真正需要人判斷的例外件控制在一成以內,然後每週固定去追一件事:哪些供應商版型、哪一類文件特別容易落到低分區。這些就是你下一輪要針對性優化的對象,而不是把門檻一路往上調了事。這裡也提醒一個採購時的識別點:如果廠商只會說「我們有用 AI 信心分數」,卻給不出一個你可以親手調、看得見的門檻,那句話是行銷話術,不是可控的機制。門檻要可調、可見、可追溯,才算數。

值不值得做,先算這一筆帳

技術講完,回到最現實的問題:這條路對你家到底划不划算。給你一個粗略但好用的算法。一張發票,人工登打加上核對,抓 2 到 3 分鐘。每個月 500 張,就是 20 個小時上下,等於大半週的人力全砸在打字上,這種量體,做 IDP 絕對值得。反過來,每個月只有幾十張、版型還亂七八糟的,先別急著花這筆錢,老實請人打,反而又快又便宜。

起步最適合下手的,是那種「量大、格式相對集中、抽錯後果可控」的文件,例如固定那幾家供應商的進貨發票。至於手寫潦草的簽收單、低解析度的傳真件、印章剛好蓋在金額上的憑證——這些連老會計都得瞇著眼睛猜,別指望模型讀得比人準,該留人工就留人工,這不是認輸,是把力氣花在對的地方。

如果你們公司也有人每天被 key-in 淹沒,廷皓科技可以幫忙做文件盤點與抽取設計,把「哪些該自動、哪些該留人、門檻設在哪」一次幫你理清楚;敏感的財務文件還能走地端部署,資料全程不出公司。挑十張你們最難搞的文件拍照傳到我們 LINE,或直接打 07-363-0802,先幫你評估這條路到底划不划算,再決定要不要走。

聯絡廷皓討論 看更多文章