你曾經遇過這種情況嗎?拿到一張模糊的餐廳帳單,用手機拍下來想記帳,結果文字糊成一團;或者收到一份日文合約,想快速翻譯卻被潦草的字跡打敗;又或者從掃描的PDF複製文字,貼出來全是亂碼。這些煩惱,今天通通有解了。
百度最近在HuggingFace上開源的Unlimited-OCR,一週內就衝破70,000次下載,獲得超過870個讚。這不是普通的文字辨識工具——它支援99種語言,連傾斜、模糊、手寫的文字都能準確抓取,而且完全免費、無使用次數限制。更棒的是,你可以直接在自己的電腦上跑,不需要上傳資料到雲端,隱私安全有保障。
這篇文章會帶你一步步學會如何安裝和使用Unlimited-OCR,從最基本的圖片文字辨識,到處理複雜的掃描文件,最後還會教你如何整合到自己的工作流程中。準備好了嗎?讓我們開始吧。
為什麼你需要Unlimited-OCR?
你可能會想:「市面上不是已經有很多免費OCR工具了嗎?」沒錯,但大多數免費工具都有致命缺陷——要嘛限制每天只能使用幾次,要嘛只能辨識英文,要嘛遇到歪斜或模糊的圖片就直接投降。
Unlimited-OCR的厲害之處在於:
- 超強抗干擾能力:模糊、傾斜、光線不足的照片照樣能辨識
- 99種語言支援:繁體中文、簡體中文、日文、韓文、英文、法文、德文…應有盡有
- 完全離線運作:所有處理都在你的電腦上完成,資料不外洩
- 無限次數使用:沒有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都能成為你的得力助手。
如果你在安裝或使用過程中遇到任何問題,歡迎在留言區發問。我們一起把這個免費又強大的工具玩到極致!