本站同時寫給人與 AI 閱讀,內容與程式由 Claude 協作製作。給機器的入口 llms.txt
待過的現場・工地與工廠

工業單據辨識真正難的,不是讀出字來,而是讓讀錯的那一張被看見

我們在工地與工廠的單據現場做過一套辨識系統,讓 AI 負責讀字,讀之前的切割與分類、讀之後的確認,都是我們設計的。這一頁不列功能,寫的是這一行外人不會知道的事,以及動工前該先弄清楚什麼。

這一行,外人不會知道的事

  1. 一張紙上常常不只一張單。磅單三四張貼在同一張 A4 上很常見,印表機一次吐出好幾份同版型的單據也很常見。先切開,才能一張張對應到一筆紀錄。切錯一次,後面的數字就全部跟著錯。
  2. 原圖本來就不乾淨。工地的單據多半是手機隨手拍,紙面歪、有陰影與摺痕。點陣印表機加上複寫紙,墨色淡、筆畫斷,0 跟 8、1 跟 7 看起來很像。
  3. 同樣叫送貨單,版型可能完全不同。同一家廠商換了印刷廠,欄位位置就跑了。混凝土送貨單、過磅單、水電費單的欄位更是各自不同,先判斷是哪一種,才知道該去哪裡找數字。
  4. 數字之間的關係,單據上通常不寫。淨重其實是總重減掉空車重,但紙上只印一個結果。登打的人通常不會逐筆去算,錯誤就這樣一路進到請款與計價。
  5. 最後那個人,才是真正的關卡。送進請款或計價之前,總要有一位承辦人對照原圖看過。系統能做的,是讓他看得快、看得出哪裡可疑,而不是替他決定數字對不對。

動工之前,我們會先問的事

動工前,我們會先問下面這些。每個答案都會改變系統怎麼做。

  • 單據是怎麼進到系統的?拍照、掃描,還是有人直接打字?一天大約幾張?
  • 同一種單據有幾種版型?印刷廠或表單換過幾次?
  • 一張紙上通常貼幾張?是要切開一張張登,還是整張一起看?
  • 讀錯的數字,現在是在哪一步、由誰發現的?
  • 這些數字最後流向哪裡?請款、計價,還是 ERP?接收的人能不能接受「標示異常、由人決定」?
  • 有沒有哪些欄位只有老師傅看得懂,寫在備註或角落的手寫字裡?

我們在這個現場做了什麼

做法的核心是:AI 只負責讀字,什麼時候讀、讀完怎麼擋、讀錯時誰看得見,是我們設計的。系統的可靠來自後面這幾道設計,不是來自模型不會錯。

  • 先切再讀:由人指定一頁要切成幾列幾欄。系統找出頁面上有字的範圍,等分成格子,每一格存成獨立影像,空白的格子會被標出來。
  • 先判斷是哪一種單據,再依該類型讀:每一格先判斷單據類型,再套用該類型的提示詞與欄位定義,請 Claude Vision 讀取。類型清單與欄位定義可以在系統內維護。
  • 讀出來要標信心,低信心不能直接用:每一筆結果都帶有高、中、低的信心等級。等級為低時,畫面會以紅色警示「請勿直接使用」,要求人對照原圖逐欄核對,而不是把猜出來的數字直接交出去。
  • 由人決定哪一格算數:切割後,人可以勾選要納入或排除的格子。辨識完成後,每一格都要按下確認或拒絕,拒絕時要寫原因。原始檔、切出的格子與模型的原始輸出都保留,回頭查得到。

如果你也在這一行,可以先想的事

  • 先不要追求全自動。能讓人一眼看出哪裡讀錯,比少點幾次確認更重要。確認這一步省不掉,只能讓它變快。
  • 先不要把所有單據一次做完。挑一種量最大、版型最穩的,例如混凝土送貨單,讓承辦人先習慣,再加過磅單或水電費單。
  • 有些事不必用系統解決。量不大時,逐張人工核對可能比導入系統更省事,先把量算清楚。
  • 把「誰看最後那一關」寫清楚。系統會標出異常,但決定數字算不算數的人必須明確。不能讓大家都以為是別人在看。

適合來談的人:營造工程單位、預拌混凝土廠、有地磅與大量水電費單據的製造業與公用事業單位,以及想把紙本單據接進既有系統、需要有人懂現場的開發團隊。

常見問題

AI 單據辨識會讀錯嗎?讀錯了怎麼辦?

會。字跡模糊、版型不熟、數字長得很像時都可能讀錯,我們不承諾每個字都對。系統的做法是讓錯誤被看見:信心低的結果會標成紅色,原圖與讀出的欄位並排,每一格都要有人按下確認或拒絕,才算完成。

照片拍得歪、有陰影,還能讀嗎?

要看原圖本身。字跡還清楚,讀得出來就讀;字糊到連人都要猜,讀出來的結果會被標成低信心,請人對照原圖逐欄核對,不會硬給一個數字。拍照時盡量讓整張紙入鏡、光線平均,能省下很多複核的時間。

一張 A4 上貼了三四張過磅單,怎麼切?

上傳時由人指定要切成幾列幾欄,系統找出頁面上有字的範圍後等分成格子,每一格存成獨立影像,空白的格子會標出來。切割是依格數等分,不是自動找出每張紙的邊界,所以紙貼得不整齊時,要在切割畫面確認每一格有沒有切到別張的字。

工地或工廠要導入,應該從哪裡開始?

從量最大、版型最穩的一種單據開始,例如混凝土送貨單或過磅單。先拿近三個月的實際單據試讀,看哪些欄位最常讀錯,再決定要不要上線。上線初期保留紙本流程並行,讓承辦人有退路。

這個案例實際用的技術:Python(FastAPI)、Claude Vision、Pillow 與 NumPy 做影像處理、Angular、SQL Server。技術跟著問題走,不是重點。