🚀 用於法語的TrOCR模型
本項目為法語場景訓練了TrOCR模型,解決了TrOCR尚未發佈法語版本的問題,為法語的光學字符識別提供了可用方案。
🚀 快速開始
TrOCR尚未發佈法語版本,因此我們為了概念驗證(PoC)的目的訓練了一個法語模型。基於此模型,建議收集更多數據以進行第一階段的額外訓練,或者進行第二階段的微調。
它是論文 TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models 中介紹的 英文TrOCR模型 的一個特殊案例,該論文由Li等人撰寫,並首次在 此倉庫 中發佈。
得益於 daekun-ml 和 Niels Rogge,他們的教程和代碼使我們能夠發佈此模型。
✨ 主要特性
- 針對法語進行訓練,為法語的光學字符識別提供支持。
- 基於已有的英文TrOCR模型架構進行改進。
📦 安裝指南
文檔未提及具體安裝步驟,可參考作者的GitHub倉庫:https://github.com/agombert/trocr-base-printed-fr/
💻 使用示例
基礎用法
from transformers import TrOCRProcessor, VisionEncoderDecoderModel, AutoTokenizer
import requests
from io import BytesIO
from PIL import Image
processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-handwritten")
model = VisionEncoderDecoderModel.from_pretrained("agomberto/trocr-base-printed-fr")
tokenizer = AutoTokenizer.from_pretrained("agomberto/trocr-base-printed-fr")
url = "https://github.com/agombert/trocr-base-printed-fr/blob/main/sample_imgs/0.jpg"
response = requests.get(url)
img = Image.open(BytesIO(response.content))
pixel_values = processor(img, return_tensors="pt").pixel_values
generated_ids = model.generate(pixel_values, max_length=32)
generated_text = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(generated_text)
📚 詳細文檔
數據收集
文本數據
我們通過從以下數據集隨機採樣,創建了約72.3萬個示例的訓練數據:
我們收集了每個數據集的部分數據,然後隨機切割句子以收集最終的訓練集。
圖像數據
圖像數據是使用TrOCR論文中介紹的TextRecognitionDataGenerator(https://github.com/Belval/TextRecognitionDataGenerator)生成的。
以下是生成圖像的代碼片段:
python3 ./trdg/run.py -i ocr_dataset_poc.txt -w 5 -t {num_cores} -f 64 -l ko -c {num_samples} -na 2 --output_dir {dataset_dir}
模型訓練
基礎模型
編碼器模型使用了 facebook/deit-base-distilled-patch16-384
,解碼器模型使用了 camembert-base
。這比從 microsoft/trocr-base-stage1
開始訓練權重更容易。
參數
我們使用了啟發式參數,沒有進行單獨的超參數調優。
- 學習率 = 4e-5
- 訓練輪數 = 25
- 混合精度訓練(fp16) = True
- 最大長度 = 32
開發集結果
對於開發集,我們得到了以下結果:
- 測試集大小:7.2萬個示例
- 字符錯誤率(CER):0.13
- 單詞錯誤率(WER):0.26
- 驗證損失:0.424
🔧 技術細節
本項目基於TrOCR模型架構,針對法語場景進行了定製化訓練。在數據收集階段,通過整合多個公開數據集的文本數據,並使用TextRecognitionDataGenerator生成圖像數據。在模型訓練方面,選擇了合適的編碼器和解碼器模型,並使用啟發式參數進行訓練,最終在開發集上取得了一定的效果。
📄 許可證
本項目採用MIT許可證。