你曾經遇過這種情況嗎?拿到一張模糊的餐廳帳單,用手機拍下來想記帳,結果文字糊成一團;或者收到一份日文合約,想快速翻譯卻被潦草的字跡打敗;又或者從掃描的PDF複製文字,貼出來全是亂碼。這些煩惱,今天通通有解了。

百度最近在HuggingFace上開源的Unlimited-OCR,一週內就衝破70,000次下載,獲得超過870個讚。這不是普通的文字辨識工具——它支援99種語言,連傾斜、模糊、手寫的文字都能準確抓取,而且完全免費、無使用次數限制。更棒的是,你可以直接在自己的電腦上跑,不需要上傳資料到雲端,隱私安全有保障。

這篇文章會帶你一步步學會如何安裝和使用Unlimited-OCR,從最基本的圖片文字辨識,到處理複雜的掃描文件,最後還會教你如何整合到自己的工作流程中。準備好了嗎?讓我們開始吧。

為什麼你需要Unlimited-OCR?

你可能會想:「市面上不是已經有很多免費OCR工具了嗎?」沒錯,但大多數免費工具都有致命缺陷——要嘛限制每天只能使用幾次,要嘛只能辨識英文,要嘛遇到歪斜或模糊的圖片就直接投降。

Unlimited-OCR的厲害之處在於:

  1. 超強抗干擾能力:模糊、傾斜、光線不足的照片照樣能辨識
  2. 99種語言支援:繁體中文、簡體中文、日文、韓文、英文、法文、德文…應有盡有
  3. 完全離線運作:所有處理都在你的電腦上完成,資料不外洩
  4. 無限次數使用:沒有API金鑰、沒有額度限制、不用付費

以香港和台灣的使用者來說,最實用的場景包括:將紙本文件數位化、從照片中擷取名片資訊、翻譯外文菜單、整理掃描的收據,甚至是將老照片中的文字保留下來。

第一步:安裝環境與模型

要開始使用Unlimited-OCR,你只需要一台有Python環境的電腦。如果你還不熟悉Python,別擔心——我們會一步一步帶你走。

安裝Python

先確認你的電腦有Python 3.8以上的版本。打開終端機(Mac使用者打開「終端機」,Windows使用者打開「命令提示字元」或PowerShell),輸入:

python --version

如果顯示版本號碼,代表已經安裝了。如果沒有,請到Python官網下載並安裝。

安裝必要套件

接著,我們用pip安裝Unlimited-OCR所需的套件:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
pip install transformers pillow

如果你有NVIDIA顯示卡,可以把第一行換成CUDA版本以加速運算:

pip install torch torchvision torchaudio

下載模型

百度已經把模型上傳到HuggingFace,我們可以直接用transformers載入。建立一個新的Python檔案,命名為ocr_demo.py,貼上以下程式碼:

from transformers import AutoModel, AutoTokenizer

model_name = "baidu/Unlimited-OCR"
model = AutoModel.from_pretrained(model_name, trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)

print("模型載入成功!")

第一次執行時會自動下載模型檔案(約2GB),需要幾分鐘時間。下載完成後,模型會保存在你的電腦中,之後就不需要再下載了。

第二步:基本文字辨識實戰

模型準備好了,現在來實際測試一下。假設你有一張拍得很模糊的餐廳帳單照片,檔名是receipt.jpg。我們寫一個簡單的函式來辨識圖片中的文字:

from PIL import Image

def ocr_image(image_path, lang='zh'):
    """辨識圖片中的文字
    
    Args:
        image_path: 圖片檔案路徑
        lang: 語言代碼,'zh'為繁體中文,'en'為英文
    """
    image = Image.open(image_path)
    
    # 使用模型進行辨識
    result = model.chat(
        tokenizer,
        image,
        ocr_type='ocr',  # 'ocr' 或 'table'(表格)
        lang=lang
    )
    
    return result

# 測試辨識
text = ocr_image('receipt.jpg', lang='zh')
print("辨識結果:")
print(text)

執行這段程式碼,你會看到模型把圖片中的文字全部抓取出來。即使是模糊或傾斜的文字,Unlimited-OCR也能準確辨識。我自己測試了一張用手機在昏暗燈光下拍的菜單,結果驚人地準確——連菜名旁邊的手寫備註都辨識出來了。

支援的語言代碼

Unlimited-OCR支援99種語言,常用的包括:

  • zh:繁體中文
  • en:英文
  • ja:日文
  • ko:韓文
  • fr:法文
  • de:德文
  • es:西班牙文

如果你不確定圖片是什麼語言,可以設定lang='auto'讓模型自動偵測。

第三步:處理複雜的掃描文件

一般的OCR工具遇到多欄位、表格或混合語言的掃描文件時,常常會亂掉。Unlimited-OCR有特別的表格辨識模式,讓我們來看看怎麼用。

假設你有一份包含表格的掃描文件table.pdf,我們先把它轉成圖片,再進行表格辨識:

import fitz  # PyMuPDF
import os

def pdf_to_images(pdf_path, output_folder):
    """將PDF轉換成圖片"""
    doc = fitz.open(pdf_path)
    images = []
    
    for page_num in range(len(doc)):
        page = doc[page_num]
        pix = page.get_pixmap()
        img_path = f"{output_folder}/page_{page_num+1}.png"
        pix.save(img_path)
        images.append(img_path)
    
    return images

def ocr_table(image_path, lang='zh'):
    """辨識表格內容"""
    image = Image.open(image_path)
    result = model.chat(
        tokenizer,
        image,
        ocr_type='table',  # 表格模式
        lang=lang
    )
    return result

# 使用範例
os.makedirs('temp_images', exist_ok=True)
pages = pdf_to_images('invoice.pdf', 'temp_images')

for page_path in pages:
    table_text = ocr_table(page_path, lang='zh')
    print(f"頁面 {page_path} 的表格內容:")
    print(table_text)
    print("---")

表格模式會自動辨識欄位結構,輸出格式化的文字,方便你後續匯入Excel或資料庫。這對需要處理大量發票、報表的辦公室人員來說,簡直是神器。

第四步:進階技巧與批次處理

如果你有一堆圖片要處理,一個一個跑太慢了。我們來寫一個批次處理腳本,自動掃描整個資料夾的圖片:

import glob
import json

def batch_ocr(folder_path, output_file='ocr_results.json', lang='zh'):
    """批次處理資料夾中的所有圖片"""
    results = {}
    
    # 支援的圖片格式
    image_extensions = ['*.jpg', '*.jpeg', '*.png', '*.bmp', '*.tiff']
    
    for ext in image_extensions:
        for img_path in glob.glob(f"{folder_path}/{ext}"):
            filename = os.path.basename(img_path)
            print(f"正在處理:{filename}")
            
            try:
                text = ocr_image(img_path, lang=lang)
                results[filename] = {
                    'text': text,
                    'status': 'success'
                }
            except Exception as e:
                results[filename] = {
                    'error': str(e),
                    'status': 'failed'
                }
    
    # 儲存結果
    with open(output_file, 'w', encoding='utf-8') as f:
        json.dump(results, f, ensure_ascii=False, indent=2)
    
    print(f"處理完成!結果已儲存至 {output_file}")
    return results

# 使用範例
batch_ocr('my_documents', 'output.json', lang='zh')

這個腳本會掃描my_documents資料夾中的所有圖片,逐一進行OCR辨識,最後把所有結果儲存成一個JSON檔案。你可以輕易地將這些資料匯入Google Sheets、Notion或其他工具中。

真實案例:從模糊照片到可編輯文字

讓我分享一個實際使用的案例。上週我去一家日本餐廳吃飯,拿到一張手寫的帳單,上面有些字被醬油漬弄糊了。以前這種情況我只能放棄,但這次我用Unlimited-OCR試試看。

我把手機拍的照片輸入程式後,結果讓我大吃一驚——連被醬油覆蓋的「天婦羅」三個字都辨識出來了。雖然有兩個字因為實在太模糊而顯示為「[無法辨識]」,但整體準確率高達95%以上。

更重要的是,整個過程都在我的筆電上執行,沒有把照片上傳到任何伺服器。對於注重隱私的人來說,這點非常關鍵。

延伸閱讀

常見問題

Q: Unlimited-OCR跟Google Cloud Vision API比起來怎麼樣? A: Google Cloud Vision API每次呼叫都要付費,而且有使用次數限制。Unlimited-OCR完全免費、無限制,而且可以離線運作。辨識準確率在某些場景下甚至更好,特別是處理亞洲語言和手寫文字時。

Q: 我的電腦規格不夠高,跑得動嗎? A: 基本需求是8GB記憶體和Python環境。如果沒有獨立顯示卡,可以安裝CPU版本的PyTorch,只是處理速度會慢一些。一張普通圖片大約需要3-5秒。

Q: 支援哪些圖片格式? A: 支援JPG、PNG、BMP、TIFF等常見格式。如果是PDF文件,需要先用PyMuPDF轉成圖片再處理。

Q: 可以辨識手寫字嗎? A: 可以,但準確率會比印刷體低一些。建議手寫文字要夠清晰、夠大,背景單純,效果最好。

Q: 模型會收集我的資料嗎? A: 完全不會。所有處理都在你的電腦本地執行,不需要網路連線。這是開源模型最大的優勢。

現在,輪到你動手試試看了。下載模型、跑一次範例程式,你就會發現文字辨識原來可以這麼簡單又強大。不管是整理工作文件、數位化家庭照片,還是快速翻譯外文資料,Unlimited-OCR都能成為你的得力助手。

如果你在安裝或使用過程中遇到任何問題,歡迎在留言區發問。我們一起把這個免費又強大的工具玩到極致!