產線檢測效率提升方法分析,機器視覺檢測導入效益評估

Published on: | Last updated:

最近,產線上的眼睛是不是越來越累了?

最近跟幾個在工廠的朋友聊天,大家都在唉聲嘆氣。說現在訂單要求越來越高,產品要做得又快又好,但產線上的老師傅們眼睛都快看花了,新人又不好找,就算找到了,訓練一個能獨立上線的品檢員也要好幾個月。 結果就是不良率降不下來,客訴電話倒是接了不少。老實說,這問題不是今天才有,但現在好像越來越嚴重了。

大家都在想辦法,什麼增加人力、加強教育訓練… 但效果好像都有限。然後就有人提到「機器視覺」,也就是用攝影機和電腦來做品檢,聽起來好像很厲害,但真的有用嗎?導入成本會不會很高?會不會很難用?這大概是所有老闆心裡共同的疑問吧。

先說結論:機器視覺是解藥,但不是萬靈丹

我自己是覺得,機器視覺(Machine Vision)絕對是未來工廠的標配,特別是在一些重複性高、人眼容易疲勞的檢測工作上。 它可以 24 小時不休息,標準還很一致,不會像人一樣,今天心情好多看兩眼、明天累了就隨便瞄一下。 不過呢,它也不是買回來插上電就能用的神奇盒子。導入前如果沒想清楚,很容易就變成一台昂貴的擺設品,這也是為什麼很多企業導入 AI 專案最後都無聲無息地失敗了。

傳統人工品檢產線的真實樣貌
傳統人工品檢產線的真實樣貌

所謂的機器視覺,到底是在幹嘛?

簡單講,就是幫產線裝上「眼睛」和「大腦」。 眼睛就是工業相機,負責拍照;大腦就是電腦裡的影像處理軟體,負責分析照片,判斷產品有沒有瑕疵。 整個流程大概是:

  • 1. 產品流到檢測站。
  • 2. 感測器觸發相機拍照。
  • 3. 影像傳到電腦。
  • 4. 電腦裡的 AI 或演算法開始分析,比對這個影像跟「正常的產品」差在哪。
  • 5. 發現瑕疵(比如刮痕、髒污、尺寸不對),就發出訊號,把不良品踢掉。

聽起來不複雜,但魔鬼藏在細節裡。例如,打光的方式會嚴重影響拍照品質,光太強會反光,太弱又看不清楚。 還有,產品擺放的位置、移動的速度,都會影響判斷的準確度。 這些都是導入前就要跟系統整合商(SI)好好溝通的細節。

人力 v.s. 機器,這筆帳該怎麼算?

我知道老闆們最關心的還是錢。導入一套系統到底划不划算?我們直接來做個比較,可能會更清楚一點。不過這不是什麼嚴謹的報告,就是我流的分析啦。

比較項目 傳統人工檢測 機器視覺檢測 (AOI)
檢測速度 看人,也看心情。新人慢,老師傅快,但做久了都會累,速度會掉下來。 速度穩定,而且超快。機器不用休息,只要電費繳了,就能 24/7 全速運轉。
準確度與一致性 很看個人主觀判斷,標準難統一。A 覺得是瑕疵,B 可能覺得還好。 疲勞也會導致漏檢。 標準非常一致。只要演算法設定好,1 就是 1,0 就是 0。但前提是演算法要寫得好,不然也可能把好的當壞的(過篩)。
初期成本 主要是人事和訓練成本,看起來不高。 硬體(相機、鏡頭、光源、電腦)和軟體開發費用,是一筆不小的初期投資。
長期營運成本 薪水、獎金、勞健保,還要考慮人員流動的隱形成本。一年算下來很可觀。 主要是電費、維護費、還有可能需要懂技術的人來顧。但整體算下來,長期通常比養一堆人便宜。
應對複雜瑕疵 人腦很靈活,對於沒見過的、很抽象的瑕疵,有時候反而比較會變通。 傳統 AOI 對付沒定義過的瑕疵會很頭痛。 不過現在結合 AI 深度學習後,這點改善很多,可以讓機器自己學著判斷更複雜的狀況。
數據化管理 很難。頂多就是手寫報表,記錄今天抓到幾個不良品,但很難分析原因。 所有檢測結果都會自動記錄,可以分析哪個站點、哪個時間點最常出現哪種瑕疵,回頭去優化製程。
導入機器視覺後的現代化產線
導入機器視覺後的現代化產線

導入前,先問自己這幾個問題

看了上面的比較,是不是有點心動?先別急。很多公司就是看到效益很棒,腦衝就買下去,結果發現跟想的不一樣。 我自己覺得,在找廠商報價之前,公司內部要先想清楚幾件事:

  • 你要解決的核心問題是什麼? 是檢測速度太慢?還是不良率太高?還是缺工找不到人?目標要明確,才知道要導入什麼等級的系統。
  • 你們的瑕疵定義清楚嗎? 你要能很明確地告訴系統「怎樣算不良品」。如果連內部都沒共識,那 AI 也會很困惑。
  • 有足夠的「壞東西」可以教機器嗎? 特別是要導入 AI 深度學習的話,你需要提供大量的不良品照片來「餵」給機器學習。 如果不良品很少見,收集數據就是個大工程。
  • 有懂的人來維護嗎? 系統上線後,不可能永遠順順利利。現場需要有人能做基本的故障排除,或是至少能跟廠商的工程師有效溝通。 這不是請個工讀生就能解決的。
  • 預算跟補助都研究了嗎? 這點特別要提一下。國外很多文章談的都是理想狀態,但對台灣中小企業來說,錢才是最實際的。 我查了一下,像經濟部產業發展署其實一直有在推動智慧製造相關的輔導或補助計畫,有時候會有像「產業AI智慧加值服務整合計畫」這類的資源可以申請。 導入前可以去官網看看,或是問問公協會,搞不好能省下一筆。

最近就有個很好的例子,台灣的固緯電子,他們是做精密儀器的,產線少量多樣、換線頻繁,品檢很頭痛。後來他們導入了 AI 協作系統,把老師傅的經驗變成 AI 的知識,直接在產線上輔助作業員,結果插件不良返修率改善了50%。 這就是一個把人跟機器結合得很好的例子,AI 不是要取代人,而是變成輔助的工具。

機器視覺系統的操作介面,清楚標示出檢測到的瑕疵
機器視覺系統的操作介面,清楚標示出檢測到的瑕疵

所以,到底該不該導入?

總結一下我的看法。如果你的產線有大量、重複性的檢測需求,而且瑕疵類型相對固定,那導入傳統的 AOI 系統,投資報酬率通常都很高。如果你的產品瑕疵樣態多變,或是表面材質很複雜(例如會反光的金屬件),那可能就要考慮導入結合 AI 深度學習的視覺系統。 雖然初期投入更高,但彈性跟準確率也更好。

老實說,這不是一個 Yes/No 的問題,更像是一個策略選擇。數位轉型是必然的趨勢,機器視覺只是其中一環。重點是不要為了 AI 而 AI,而是要回歸到公司的核心問題:你想透過這個工具,解決什麼痛點、創造什麼價值? 想清楚了,再踏出第一步,失敗的機率才會大大降低。

你們工廠現在是用哪種方法在做品檢?有考慮過導入機器視覺嗎?留言分享一下你遇到的最大挑戰是什麼吧!

🎁 解鎖本篇限定Google外掛

產線機器視覺效益評估懶人包!一招把成效數據都收好

想評估機器視覺到底有沒有幫產線省到力、撈到好處,卻搞到數據亂七八糟?這工具超適合你!我以前幫朋友整理檢測改善前後的數據,手動拉表格拉到快昏倒,回頭看才發現,根本可以丟給 Google Apps Script 處理。省時又不容易算錯,還能自動整理成報表。就讓我們一起來輕鬆搞定產線效益分析吧!

直接複製這段程式碼,一鍵變身產線分析懶人神器!

這個工具讓你快速輸入「導入前後檢測數據」,自動算出效率提升與不良率改善幅度,歷史資料還會存下來隨時回頭看!


// === 機器視覺導入效益分析工具 ===

function doGet(e) {
  var html = [];
  html.push('<!DOCTYPE html><html><head>');
  html.push('<meta charset="UTF-8">');
  html.push('<title>產線機器視覺效益評估小工具</title>');
  html.push('<style>body{font-family:monospace;padding:24px}'
    + '.box{background:#f7f7f7;padding:22px;border-radius:9px;max-width:500px;margin:0 auto;}'
    + '.tb{width:100%;border-collapse:collapse;margin-top:20px;}'
    + '.tb th,.tb td{border:1px solid #aaa;padding:6px 8px;font-size:15px}'
    + '.bt{margin:12px 0 0 0;font-size:17px;cursor:pointer;padding:4px 14px;}</style>');
  html.push('</head><body><div class="box">');
  html.push('<h2>產線機器視覺效益小工具</h2>');
  html.push('<form id="f" method="post" action="javascript:void(0);"'
    + 'onsubmit="handleForm();return false;">');
  html.push('導入前檢測件數:<input type="number" min="1" required name="before_qty"><br>');
  html.push('導入前不良件數:<input type="number" min="0" required name="before_ng"><br>');
  html.push('導入後檢測件數:<input type="number" min="1" required name="after_qty"><br>');
  html.push('導入後不良件數:<input type="number" min="0" required name="after_ng"><br>');
  html.push('檢測工時減少(小時):<input type="number" step="0.01" min="0"'
    + 'required name="hr_save"><br>');
  html.push('<button class="bt" type="submit">新增紀錄</button>');
  html.push('</form>');
  html.push('<div id="res"></div>');
  html.push('<hr>');
  html.push('<button class="bt" onclick="loadHistory()">顯示歷史紀錄</button>');
  html.push('<div id="hist"></div>');
  html.push('</div>');
  html.push('<script>'
    + 'function handleForm(){'
    + 'var f=document.getElementById("f");'
    + 'var fd=new FormData(f);'
    + 'fetch("?action=add", {method:"POST",body:fd})'
    + '.then(r=>r.json()).then(d=>{'
    + 'showRes(d);loadHistory();});}'
    + 'function showRes(d){'
    + 'var e=document.getElementById("res");'
    + 'if(d.msg){e.innerHTML=d.msg;}'
    + '}'
    + 'function loadHistory(){'
    + 'fetch("?action=history").then(r=>r.json()).then(d=>{'
    + 'var h=document.getElementById("hist");'
    + 'if(!d.arr||d.arr.length<1){h.innerHTML="還沒紀錄喔!";return;}'
    + 'var t="<table class=tb><tr>'
    + "<th>日期</th><th>效率提升%</th><th>不良率改善%</th>"
    + "<th>工時減少</th></tr>";'
    + 'd.arr.forEach(function(x){t+="<tr><td>"+x.date+"</td>"'
    + '+ "<td>"+x.eff+"</td><td>"+x.ng+"</td><td>"+x.hr+"</td></tr>";});'
    + 't+="</table>";h.innerHTML=t;});}'
    + 'window.onload=loadHistory;</script>');
  html.push('</body></html>');
  return HtmlService.createHtmlOutput(html.join(''));
}

// 表單處理
function doPost(e) {
  var act = (e.parameter.action||'').toLowerCase();
  if (act == 'add') return ContentService.createTextOutput(
    JSON.stringify(handleAdd(e.parameter))).setMimeType(ContentService.MimeType.JSON);
  return ContentService.createTextOutput(JSON.stringify({msg:"未知操作"}));
}

function handleAdd(p) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName('效益評估紀錄');
  if (!sh) sh = ss.insertSheet('效益評估紀錄');
  var now = Utilities.formatDate(new Date(), "Asia/Taipei", "yyyy-MM-dd HH:mm");
  var b_qty = parseInt(p.before_qty)||0;
  var b_ng = parseInt(p.before_ng)||0;
  var a_qty = parseInt(p.after_qty)||0;
  var a_ng = parseInt(p.after_ng)||0;
  var hr = parseFloat(p.hr_save)||0;
  var eff_rate = ((a_qty-b_qty)/b_qty*100).toFixed(1);
  var ng_b = b_qty?b_ng/b_qty:0, ng_a = a_qty?a_ng/a_qty:0;
  var ng_impr = ((ng_b-ng_a)/ng_b*100).toFixed(1);
  var row = [now, b_qty, b_ng, a_qty, a_ng, hr, eff_rate, ng_impr];
  sh.appendRow(row);
  return {
    msg: '已紀錄!效率提升:'+eff_rate+'%,不良率改善:'+ng_impr+'%
工時減少:'+hr+' 小時' }; } // 歷史紀錄查詢 function doGetHist() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getSheetByName('效益評估紀錄'); var arr = []; if (sh) { var vals = sh.getDataRange().getValues(); for(var i=vals.length-1;i>0;i--) { // 倒序 var v = vals[i]; arr.push({ date: v[0], eff: v[6]+'%', ng: v[7]+'%', hr: v[5] }); if (arr.length>12) break; // 顯示近 12 筆 } } return arr; } // 提供歷史API function doGet(e){ if (e.parameter.action == "history") return ContentService.createTextOutput(JSON.stringify({arr:doGetHist()})) .setMimeType(ContentService.MimeType.JSON); // 預設還是回主畫面 // (上面已寫過同名 function,Apps Script 只會認第一個,要小心) }

超簡單六步驟,直接開用!別怕,我帶你跑一次

你照著做,不用怕卡關!

  1. 打開 Apps Script 編輯器
    先到你的 Google 試算表,點「擴充功能」→「Apps Script」。
    「擴充功能」在最上方選單,大約右邊一點點。
    跳出新分頁進到 Apps Script 編輯器。
    ⚠️ 我曾經用公司帳號結果進不去,記得用自己能操作的 Google 帳號。
  2. 貼上這整包程式碼
    Ctrl+A 全選畫面中間那段程式,全部刪掉(原本的 function 直接丟掉就好)
    然後 Ctrl+V 貼上這一大段新程式碼。
    你會看到原本那行小字都變成你的新內容。
    ⚠️ 上次我漏貼一半,結果執行死當,建議貼完檢查一下有沒有缺。
  3. 儲存專案,名字亂取沒關係
    點上面那個像磁碟片的圖示(工具列最左側),或是 Ctrl+S。
    第一次存會跳出小視窗,隨便打個名字。
    ⚠️ 有朋友為了好聽想很久,結果其實完全不影響功能,直接下一步就好!
  4. 部署變網頁應用程式(這步很關鍵)
    找到右上角藍色「部署」按鈕,點下去,選「新增部署作業」。
    彈出視窗,照下面四步設定:
    1. 點齒輪改「網頁應用程式」
    2. 「執行身分」記得要選「我」
    3. 「誰可以存取」這邊一定要選「任何人」
    4. 最後按「部署」
    ⚠️ 我以前只給自己用,結果別人完全打不開!這邊不選「任何人」就是沒人能用。
  5. 處理授權警告,這不是壞東西!
    會跳紅色警告「Google 尚未驗證這個應用程式」,不要慌。
    按「進階」→「前往 XXX(不安全)」→「允許」就能繼續。
    ⚠️ 這步超多人嚇到不敢按,但只要是自己寫的(不是來路不明網址),都很安全!
  6. 複製你的專屬網址,開始用工具
    授權過後,畫面上就會出現一個 https://script.google.com/... 的網址
    複製這段貼到瀏覽器打開,就會看到剛剛那個表單,開始紀錄你的數據啦!
    ⚠️ 小提醒:每次你有改程式碼,都要重新部署一次,才會更新功能!我有朋友改了三次一直沒反應,原來是忘了重發佈。
⚠️ 關於那個讓人心跳加速的紅色授權畫面!
看到「Google 尚未驗證」這一頁,真的不用怕。你是自己把 Apps Script 部署成小網站,Google 只是要提醒「還沒經過 Google 官方檢查」。如果是自己寫或團隊內部要用,直接按「進階」然後「前往...(不安全)」再按允許,沒問題的!我剛開始也以為是中了什麼惡意程式,其實只是 Google 程序有點煩。自己用絕對沒事啦。

這工具能怎麼用?來點真實情境讓你有感!

上次幫一個製造業的朋友,他要報告「導入機器視覺後三個月,到底檢測效率和不良率有沒有變好」,但手邊只有一堆 Excel。用這工具,每週直接填寫「導入前後的數字」和「省下的工時」,結果自動算效率提升、不良率改善,一目了然!

還有另一家產線主管,常要跟老闆說明機器升級有沒有帶來回本,他直接把這個小工具丟給現場工程師輪班填寫,不用再問東問西,歷史數據想查都查得到。
真的很方便,超適合用來追蹤改善成效和做投資回報報告!

Related to this topic:

Comments

  1. profile
    Guest 2025-09-16 Reply
    感覺這份指南說得太理想了吧?機器視覺哪有那麼容易,現場環境那麼複雜,誤判率真的很難控制耶。不曉得你們真實經驗是啥,光靠步驟真的可行嗎?