電腦視覺 - 文字辨識 (OCR) 與車牌辨識系統

電腦視覺 - 文字辨識 (OCR) 與車牌辨識系統

電腦不僅能看懂圖片裡有什麼,還能「讀懂」圖片裡的文字!本篇將帶你認識光學字元辨識 (OCR) 技術,並以最經典的「自動車牌辨識 (ALPR)」為案例,帶你拆解從車輛偵測到讀出車牌號碼的完整 AI 流程。


在前幾天的文章中,我們學習了如何讓 AI 辨識圖片中的貓狗 (CNN)、框出物體的位置 (YOLO),甚至描繪出物體的精確邊界 (U-Net)。今天我們要賦予電腦一項更具實用價值的技能:閱讀文字

這項技術被稱為 OCR (Optical Character Recognition,光學字元辨識),它是現代生活中應用最廣泛的 AI 技術之一,從掃描發票對獎、Google 翻譯的鏡頭掃描,到停車場的自動收費系統,都離不開它。

本篇我們將以最經典的 「自動車牌辨識系統 (ALPR, Automatic License Plate Recognition)」 為例,帶你一步步拆解電腦是如何從一張照片中,精準讀出車牌號碼的!


一、 什麼是 OCR 與其發展史?

簡單來說,OCR 的任務就是 「把圖片上的像素,轉換成電腦能處理的文字編碼 (如 ASCII 或 Unicode)」

這項技術的發展經歷了漫長的演進,從早期的「死記硬背」到現在的「深度理解」,以下是幾個主宰 OCR 領域的重要里程碑與模型:

  1. Tesseract OCR (1985 年誕生,2006 年由 Google 開源): 這是歷史最悠久、最經典的老牌 OCR 引擎。早期依賴嚴格的「特徵比對」(字體要標準、背景要全白)。雖然古老,但因為極度穩定,至今仍在許多傳統系統中服役。
  2. CRNN 架構 (2015 年): 深度學習的轉捩點!科學家將 CNN(抓取影像特徵)RNN/LSTM(理解文字前後文語意) 結合。這讓電腦能像人類一樣「看著圖片,順著語意讀出來」,大幅解決了字體扭曲、手寫字等問題。
  3. EasyOCR (2020 年): 基於 PyTorch 開發的超熱門開源套件,背後的核心就是 CRNN 架構。它的最大賣點是支援 80 多種語言,且 API 設計極度友善,幾乎三行 Python 程式碼就能跑出結果,是許多新手的首選。
  4. PaddleOCR (2020 年起): 由百度推出的開源框架,是目前工業界公認的霸主。它不僅輕量化做得極好(模型極小),而且在辨識速度與準確度上表現驚人,尤其是針對「中文」的辨識能力,幾乎沒有對手。

二、 實戰拆解:車牌辨識 (ALPR) 的完整管線

在現實世界中,我們不可能要求每台車都乖乖把車牌貼在鏡頭正前方。因此,一個成熟的車牌辨識系統,通常包含三個連續的 AI 處理步驟(Pipeline):

Loading Diagram...
  1. 物件偵測 (Detection):先在一張大照片中,找出「車子」和「車牌」的位置。這一步通常會交給速度極快的 YOLO 模型來負責。
  2. 影像預處理 (Extraction & Processing):車牌可能因為拍攝角度而變形。這時會使用 OpenCV 等影像處理套件,將車牌裁切下來,並進行「透視轉換 (Perspective Transform)」將車牌拉平,接著轉為黑白對比,濾除雜訊。
  3. 文字辨識 (OCR):將處理好的乾淨車牌影像,送入 OCR 引擎(如 Tesseract、EasyOCR),將圖片中的每一個字元切分並辨識出結果。

三、 Python 實作與結果解析

為了解釋這個過程,我們使用 Python 與電腦視覺庫 (OpenCV) 寫了一支模擬程式,重現了上述的三大步驟。

我們來看 AI 處理的實際視覺化結果:

OCR車牌辨識流程

圖片結果說明:

  1. 左圖 (1. Vehicle & Plate Detection)
    • 場景:這模擬了停車場監視器拍到的原始畫面,圖片中含有各種雜訊與視角扭曲。
    • AI 動作:物件偵測模型成功在畫面中框出了綠色的 Bounding Box,並標示 Plate 99%,代表模型高度確信這塊區域是車牌。
  2. 中圖 (2. License Plate Extraction)
    • 場景:這不是單純的裁切!如果仔細看左圖,車牌原本是稍微傾斜的。
    • AI 動作:透過影像預處理技術,系統不僅將車牌區域獨立裁切出來,還自動將它「拉平、放大」,變成一張端正的車牌照片,這能大幅提升後續 OCR 的成功率。
  3. 右圖 (3. Character OCR Recognition)
    • 場景:將拉平後的車牌送入 OCR 引擎。
    • AI 動作:引擎會將每個潛在的字元(字母與數字)框出來(藍色框框),逐一進行影像分類,最終組合並輸出純文字結果:[ ABC-1234 ]

四、 總結

  1. OCR 讓圖片具備閱讀能力:它能將非結構化的影像資料(圖片),轉換為結構化的文字資料(字串),是數位轉型的核心技術。
  2. 真實世界的 AI 是打群架:就像車牌辨識系統一樣,解決一個真實問題通常不能只靠單一模型。它結合了 YOLO (找位置) + OpenCV (影像校正) + OCR (讀文字) 的完美接力。
  3. 預處理極為重要:「Garbage in, garbage out」。如果沒有步驟二將車牌拉平與去雜訊,再強的 OCR 引擎也會讀錯。

現在,下次當你開車進入停車場,閘門自動為你升起時,你就能在腦海中完美勾勒出背後這套 AI Pipeline 的運作瞬間了!