🚀 フランス語用TrOCR
TrOCRはまだフランス語版がリリースされていないため、PoC目的でフランス語モデルを学習させました。このモデルを基に、より多くのデータを収集して第1段階の追加学習を行うか、第2段階として微調整を行うことをおすすめします。
このモデルは、Liらによる論文 TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models で紹介され、このリポジトリ で最初に公開された 英語のtrOCRモデル の特殊なケースです。
このモデルの公開には、daekun-ml と Niels Rogge のチュートリアルとコードが大きく貢献しています。
🚀 クイックスタート
このモデルは、フランス語の画像からテキストを認識するために訓練されています。以下のセクションでは、データ収集、学習、使用方法について説明します。
✨ 主な機能
- フランス語の画像からテキストを認識することができます。
- 既存のTrOCRモデルを基に、フランス語用に訓練されています。
📦 インストール
このモデルを使用するには、transformers
ライブラリが必要です。以下のコマンドでインストールできます。
pip install transformers
📚 ドキュメント
データ収集
テキストデータ
以下のデータセットからランダムにサンプリングすることで、約723kの学習データを作成しました。
各データセットの一部を収集し、文をランダムに切断して最終的な学習セットを収集しました。
画像データ
画像データは、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
から重みを開始するよりも学習が容易です。
パラメータ
個別のハイパーパラメータチューニングを行わず、ヒューリスティックなパラメータを使用しました。
- learning_rate = 4e-5
- epochs = 25
- fp16 = True
- max_length = 32
開発セットでの結果
開発セットでは、以下の結果を得ました。
- テストセットのサイズ: 72kのサンプル
- CER: 0.13
- WER: 0.26
- 検証損失: 0.424
💻 使用例
基本的な使用法
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)
注意事項
すべてのデータ収集とモデル学習に必要なコードは、作者のGithubに公開されています。
- https://github.com/agombert/trocr-base-printed-fr/
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。