產品外觀缺陷檢測自動化廠商怎麼選?AOI技術能力評估

Published on: | Last updated:

先說結論

嗯...選AOI廠商,技術規格真的只是其次。重點不是誰的相機解析度最高、或誰的AI模型最神。說真的,那都只是行銷話術。

核心只有一個:這家廠商的方案,跟你工廠的「問題複雜度」和「團隊能力」匹不匹配。選錯了,就像叫一個博士去掃地,或是叫小學生解微積分...都會是災難。

問題在哪?為何這麼難選

看了一堆資料,每家都說自己準確率99%。 聽起來都很棒,但魔鬼都在細節裡。傳統AOI(Automated Optical Inspection)的極限很明顯,對於沒見過的瑕疵、或是表面材質反光不一的狀況,誤判率就開始飆高。這也是為什麼現在大家都在喊「AI AOI」。

但AI也不是萬靈丹。導入AI,代表需要大量的瑕疵圖片來「餵」給模型學習。 你的產線有這麼多NG品讓你收嗎?收來的樣本夠不夠多樣?這都是成本。而且,AI模型需要懂的人去調校、去維護,你公司有這個人嗎?這些問題,銷售業務通常不會主動告訴你。

國外有些分析提到,選整合商時要看他對你產業的了解深度,這點很重要。 台灣的廠商在這點上就有地理優勢,特別是在PCB或半導體領域,很多廠商都已經有特化的解決方案。 但反過來說,如果你的產品很特殊,這些「公版」方案就不一定適用。

AOI 廠商 PoC 實測,用真實瑕疵樣本評估能力
AOI 廠商 PoC 實測,用真實瑕疵樣本評估能力

評估三階段:從 PoC 到導入

與其聽業務說得天花亂墜,不如直接動手測。我自己的習慣是走這三步,很花時間,但能避開九成的坑。

第一階段:定義「清楚的問題」

這一步最關鍵,但最多人跳過。不要只跟廠商說「我要檢測外觀瑕疵」。你要準備一個「考題包」。

  • OK 樣本 (Golden Sample): 準備至少 20 個你認為絕對完美的產品。
  • NG 樣本: 盡可能收集所有類型的瑕疵品,刮傷、髒污、色差、尺寸不符、印刷偏移...每種至少 5-10 個。 瑕疵越刁鑽越好。
  • 挑戰樣本 (Borderline Sample): 那種在及格邊緣、連老師傅都要想一下的,這才是真正考驗廠商演算法能力的東西。

把這些樣本拍照、編號,清楚定義每一個瑕疵是什麼、在哪裡。這份文件就是你的驗收標準。

第二階段:辦一場 PoC 測驗

把你的「考題包」複製幾份,發給你正在評估的 2-3 家廠商。告訴他們,請用你們的設備和軟體來測,然後給我一份報告。這就是Proof of Concept (PoC)。

看報告時,重點不是總準確率,而是這幾個指標:

  • 漏判率 (Escape Rate): 這是最重要的。把NG品判成OK品,絕對是災難。這個數字要越低越好。
  • 誤判率 (False Alarm Rate): 把OK品判成NG品。這個數字太高,會讓產線人員花一堆時間去複檢,失去自動化的意義。
  • 設定時間 (Setup Time): 他們花多久時間才完成這個檢測專案?如果搞了好幾個禮拜,代表這套系統的彈性可能很低,未來換產品或換標準時會很痛苦。
  • 檢測速度 (Inspection Speed): 每分鐘能檢測多少個 (UPM),這個必須符合你產線的節拍。

第三階段:看技術以外的事

PoC 跑完,技術能力大概就有底了。接下來要談的,就是更軟性的東西。

  • 整合與擴充性: 系統好不好跟你現有的MES整合?未來如果想增加檢測站,或換成更快的相機,架構支援嗎?
  • 技術支援: 半夜產線掛了,找得到人嗎?是電話支援還是能到場?國外整合商可能會有時差問題,這點本土廠商相對吃香。
  • 教育訓練: 他們會不會教你的員工怎麼操作、怎麼做基本的參數調整?還是什麼都要靠他們?這決定了你未來的維護成本。

技術再強,產線卡住、沒人會用,一切都是白搭。

三種 AOI 導入路徑的極簡示意圖
三種 AOI 導入路徑的極簡示意圖

三種主流方案,怎麼挑?

市面上的方案大概可以分成這三種,沒有絕對好壞,只有適不適合。

方案類型 適合對象 優點 缺點
國際大廠全包方案
(例如 Cognex, Keyence)
嗯...口袋夠深、不想自己養視覺團隊的大型企業。
  • 穩定、可靠,標準化程度高。
  • 教育訓練和文件通常很完整。
  • 出問題有人負責到底。
  • 非常貴。硬體、軟體授權、服務費...層層疊加。
  • 彈性差,客製化能力弱或費用極高。
  • 就是個黑盒子,你很難知道底層邏輯。
  • 台灣系統整合商
    (例如由田, 牧德等)
    大部分電子製造業、傳產。需要一定彈性,但又沒能力全自幹。
  • 價格比國際大廠有競爭力。
  • 熟悉在地產業生態,溝通順暢,支援即時。
  • 能依據需求做一定程度的客製化。
  • 品質良莠不齊,要慎選。
  • 技術深度可能不如國際大廠。
  • 很吃整合商本身的經驗跟能力。
  • 軟體授權 + DIY硬體
    (例如使用 OpenCV, Halcon)
    公司內部有專職的影像處理或自動化工程師的團隊。
  • 成本最低,彈性最大。
  • 技術掌握在自己手上,不怕被綁架。
  • 可以用 OpenCV 這類開源工具省下軟體費。
  • 失敗風險高,非常吃重團隊能力。
  • 開發時程長,需要不斷試錯。
  • 沒人能負責,所有問題都要自己解決。
  • AI 檢測的迷思

    最後想提一下 AI。現在沒掛個 AI 好像就落伍了。但 AI 檢測有幾個現實問題要考慮。

    第一,資料。AI 的基礎是大量、高品質的標註資料。 如果你的瑕疵很少出現,或是瑕疵種類千變萬化,AI 模型就很難學得好。最近有些廠商開始用生成式 AI 來「創造」瑕疵樣本,這是一個有趣的趨勢,但生成樣本跟真實樣本之間還是有差距。

    第二,算力。AI 模型,特別是深度學習,需要強大的 GPU 運算。這代表硬體成本會更高。有些廠商提供雲端訓練服務,但這又牽涉到資料上傳的資安問題。

    第三,可解釋性。AI 判斷一個產品是 NG,但它不一定能清楚告訴你「為什麼」。它可能只是覺得「這裡看起來怪怪的」。這對於你要回頭去改善製程,其實幫助有限。

    所以,不要一聽到 AI 就高潮。先回頭看看你的問題:傳統 AOI 演算法是不是真的解決不了?問題的根源,真的是檢測站嗎?還是製程本身就不穩定?有時候,花錢升級 AI,不如把錢拿去改善製程,從源頭減少瑕疵,可能更有效。

    傳統視覺與 AI 檢測的差異,後者能更精準鎖定真實缺陷
    傳統視覺與 AI 檢測的差異,後者能更精準鎖定真實缺陷

    輪到你了

    如果要在你的產線導入瑕疵檢測,你認為最大的挑戰是什麼?是「居高不下的成本」、「難以捉摸的準確率」,還是「找不到人來維護」?在下面留言分享你的看法吧。

    🎁 解鎖本篇限定Google外掛

    AOI 廠商評比懶人包:一鍵記錄、直觀比較超輕鬆!

    每次要挑 AOI(自動光學檢測)廠商時,是不是資料整理到頭暈?規格數據一大堆,還得追問業務一些模糊答案,整理下來比審查還累。我有朋友之前只記在記事本,廠商一多就亂掉,最後還漏掉重點差異。別怕,這次教你一招,把 AOI 方案資訊全都丟進 Google 表單+表格,還能自動算評分、歷史紀錄一目了然,超爽!

    複製下面的 AOI 評分表神器,一次搞定記錄+計算!

    這工具能讓你輸入各家 AOI 廠商的技術細節、優劣勢、現場評分,資料全部自動存進 Google Sheet,隨時回顧每一筆。還會直接算總分和平均分數!

    
    // === AOI 廠商評分懶人包 ===
    
    function doGet(e) {
      var html = [];
      html.push('<html><head><title>AOI 廠商評比小工具</title>');
      html.push('<style>body{font-family:monospace;background:#f6f6fa}'
        +'input,select{padding:4px 8px;margin:3px 0;width:95%}'
        +'.btn{padding:6px 20px;background:#3c72fd;color:#fff;border:none;'
        +'border-radius:4px;margin:10px 0;cursor:pointer;}</style></head>');
      html.push('<body><h2>AOI 廠商評分小工具</h2>');
      html.push('<form method="post" action="?submit=1">');
      html.push('廠商名稱:<br><input name="vendor" required><br>');
      html.push('檢測速度(片/hr):<br><input type="number" name="speed" required><br>');
      html.push('解析度(um):<br><input type="number" name="res" required><br>');
      html.push('缺陷分類能力:<br><select name="classify">'
        +'<option>普通</option><option>中上</option>'
        +'<option>很強</option></select><br>');
      html.push('現場服務分數(1-5):<br><input type="number" name="service" min="1" max="5" required><br>');
      html.push('售後支持分數(1-5):<br><input type="number" name="support" min="1" max="5" required><br>');
      html.push('備註:<br><input name="note"><br>');
      html.push('<button class="btn">儲存/評分</button>');
      html.push('</form>');
      // 讀取歷史資料
      var list = getAOIHistory();
      if (list.length > 0) {
        html.push('<h3>歷史紀錄一覽</h3>');
        html.push('<table border=1 cellpadding=4 style="background:#fff">');
        html.push('<tr><th>廠商</th><th>速度</th><th>解析度</th>'
          +'<th>分類</th><th>現場</th><th>售後</th>'
          +'<th>總分</th><th>平均</th><th>備註</th>'
          +'<th>時間</th></tr>');
        list.forEach(function(r){
          html.push('<tr>');
          for (var i=0;i< r.length; i++) html.push('<td>'+r[i]+'</td>');
          html.push('</tr>');
        });
        html.push('</table>');
      }
      html.push('</body></html>');
      return HtmlService.createHtmlOutput(html.join(''));
    }
    
    function doPost(e){
      var v = e.parameter;
      var score = calcScore(v);
      var avg = (score/4).toFixed(1);
      var now = Utilities.formatDate(new Date(), "Asia/Taipei", "MM-dd HH:mm");
      var row = [v.vendor, v.speed, v.res, v.classify, v.service, v.support, 
        score, avg, v.note, now];
      var sh = getSheet();
      sh.appendRow(row);
      return HtmlService.createHtmlOutput(
        '<meta http-equiv="refresh" content="1; url=/">'
        +'資料已儲存,1 秒後自動返回…');
    }
    
    // 計算分數:速度+解析度+分類+現場+售後
    function calcScore(v){
      var s = 0;
      // 速度 4000↑ = 5分, 2000~3999=4, 1000~1999=3, 500~999=2, 500↓=1
      var n_speed = parseInt(v.speed,10);
      s += n_speed>=4000?5:n_speed>=2000?4:n_speed>=1000?3:n_speed>=500?2:1;
      // 解析度(數值越小分數越高)
      var n_res = parseInt(v.res,10);
      s += n_res<=10?5:n_res<=15?4:n_res<=25?3:n_res<=35?2:1;
      // 缺陷分類
      s += v.classify=="很強"?5:v.classify=="中上"?3:1;
      // 現場與售後,直接加
      s += parseInt(v.service,10);
      s += parseInt(v.support,10);
      return s; // 最高20分
    }
    
    // 抓 Sheet,如果沒有就建
    function getSheet(){
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sh = ss.getSheetByName("AOI_評分");
      if(!sh){
        sh = ss.insertSheet("AOI_評分");
        sh.appendRow(["廠商","速度","解析度","分類能力",
          "現場服務","售後支持","總分","平均","備註","時間"]);
      }
      return sh;
    }
    
    // 歷史資料取出
    function getAOIHistory(){
      var sh = getSheet();
      var vals = sh.getDataRange().getValues();
      vals.shift(); // 刪標題
      return vals.reverse().slice(0,8); // 只抓 8 筆,太多會擠
    }
    

    AOI廠商評分小工具怎麼用?輕鬆部署不用怕!

    別擔心,跟著做一次,第一次弄也很順!

    1. 步驟一:打開 Apps Script 編輯器
      先到 Google 試算表,從上方選單「擴充功能」→「Apps Script」進去
      就在中間偏右的位置,別找錯!點下去會新開一個分頁
      ⚠️ 我有碰過公司帳號被擋、彈跳視窗不見的情況,如果沒反應,檢查權限或試試自己私人帳號。
    2. 步驟二:清掉預設程式碼再貼上新的
      編輯器白色大區塊,Ctrl+A 全選,然後按 Delete,再貼上上面那坨程式碼(Ctrl+V)
      你應該只看到一個 `function doGet(e)` 開頭,別保留舊的
      ⚠️ 有次我懶得刪乾淨,結果執行錯誤一直報 function 重複,小心!
    3. 步驟三:存檔,取個專案名
      按左上角的磁碟片圖示,或 Ctrl+S,會跳出視窗問你要叫什麼名字
      隨便打一個,例如 AOI-Compare。存檔後才有東西可以部署!
      ⚠️ 我試過沒先存檔就部署,結果什麼都沒出來...先存穩一點。
    4. 步驟四:部署成網頁應用程式
      右上角有個藍色「部署」,點下去 →「新增部署作業」
      1. 跳出的視窗,齒輪圖示選「網頁應用程式」
      2. 執行身分記得選「我」
      3. 「誰可以存取」選「任何人」
      4. 全部設定好,按「部署」
      ⚠️ 有朋友公司規定太嚴「任何人」選項被擋,那就換個 Google 個人帳號,才不會卡住。
    5. 步驟五:遇到紅色警告,放心點下去授權
      按照流程,出現大大的紅色警告不用怕!
      點「進階」→「前往 XXX(不安全)」→「允許」
      這是正常的,因為自己寫的小工具 Google 還沒幫你認證啦
      ⚠️ 剛學的時候我看到紅字嚇到,後來問技術社團才知道,自己寫都這樣,別擔心!
    6. 步驟六:複製網址開始用
      授權後會看到一個網址,像 `https://script.google.com/...`
      這就是你專屬的 AOI 評比入口,複製丟給同事、貼到書籤都可以
      ⚠️ 有改程式碼要重新部署才會生效!之前我只改沒重新部署,結果資料卡住,害我多重填一次。
    ⚠️ 關於 Google 的紅色授權警告是什麼?別怕!
    只要你自己寫 Apps Script,又還沒送 Google 官方審查,上線第一次都一定會看到紅字警告。這是 Google 用來保護用戶的小機制,提醒你這不是市面通過檢查的 app。其實你寫的只是記錄自己資料,不會外洩,照著授權流程點下去就好。只要你自己貼的程式碼來源沒問題,完全可以放心使用,不會中毒也不會外洩。

    什麼場景超適合用?分享兩個我實際遇過的狀況!

    有一次,朋友公司要換 AOI 設備,找了 4 家廠商,報價規格都不一樣,有的寫「缺陷分類 AI 」,有的寫「缺陷分級普通」。我就讓他用這工具把每家速度、解析度、現場分數都記下來,最後一比分數馬上高下立判,連採購長官都覺得清楚。有另一家比較龜毛,現場 demo 會後,還能即時用手機輸入評分,回到辦公室一查歷史紀錄,廠商表現直接有憑有據,省超多溝通麻煩。搞定!

    Related to this topic:

    Comments

    1. profile
      Guest 2026-01-29 Reply
      選AOI廠商這件事,唉,其實沒有表面上看起來那麼簡單啦。我記得以前我在電子產品產線那邊,剛好有參一腳搞過升級案。老實說,你看廠商那麼多,有些跟你對話的時候很會吹牛,好像技術多猛,可是軟體根本沒顧到,最後查良品率低就很尷尬啊。有時候明明硬體數據漂亮,但系統優化不到位,誤判下來嚇死人。 然後比較重要的是,一開始真的要講清楚自己的需求,把自己常遇到的怪瑕疵、髒污什麼的都攤出來。有專業點的團隊會當場直接搬樣本來開機測給你看,現場跑個DEMO,有沒有遇到狀況馬上解釋,或是告訴你哪些地方他們現在還不太能處理,那種人一下就知道靠不靠譜。反應速度慢或者問三題答一題的就……唉,不說了。 然後還有些小細節,看起來沒什麼,但超容易踩雷。例如之後你要不要自己維護?跟你現有系統相不相容?這些當下不談清楚,以後真的有夠麻煩。欸說到這裡又想到,有時候剛導入AOI,機台初調那段日子真的大家忙到炸裂,天天加班微調參數,就只希望快點穩定下來。自動化雖然很厲害,可是真的選夥伴不能太馬虎。有空多花點力氣研究,多比幾家,多問幾句,也會少踩很多坑啦。