🚀 TrOCR base handwritten for French
TrOCRの手書き文字認識モデルのフランス語版は未リリースです。そこで、PoC目的でフランス語用のモデルを学習しました。このモデルをベースに、より多くのデータを収集して1段階目の追加学習や、2段階目の微調整を行うことを推奨します。
🚀 クイックスタート
TrOCRの手書き文字認識モデルのフランス語版は未リリースであるため、PoC目的でフランス語用のモデルを学習しました。このモデルは、論文 TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models で紹介された English large handwritten trOCR model の特殊なケースです。
✨ 主な機能
- フランス語の手書き文字を認識することができます。
- 2つのデータセットと1つの生成データセットを用いて2段階で微調整されています。
📦 インストール
このモデルを使用するには、transformers
ライブラリが必要です。以下のコマンドでインストールできます。
pip install transformers
💻 使用例
基本的な使用法
from transformers import TrOCRProcessor, VisionEncoderDecoderModel, AutoTokenizer
from PIL import Image
import requests
from io import BytesIO
url = "https://github.com/agombert/trocr-base-printed-fr/blob/main/sample_imgs/5.jpg"
response = requests.get(url)
img = Image.open(BytesIO(response.content))
processor = TrOCRProcessor.from_pretrained('microsoft/trocr-large-handwritten')
model = VisionEncoderDecoderModel.from_pretrained('agomberto/trocr-large-handwritten-fr')
tokenizer = AutoTokenizer.from_pretrained('agomberto/trocr-large-handwritten-fr')
pixel_values = (processor(images=img, return_tensors="pt").pixel_values)
generated_ids = model.generate(pixel_values)
generated_text = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
📚 ドキュメント
モデルの概要
TrOCRモデルはエンコーダ・デコーダモデルで、エンコーダに画像Transformer、デコーダにテキストTransformerを使用しています。画像エンコーダはBEiTの重みで初期化され、テキストデコーダはRoBERTaの重みで初期化されています。
意図された用途と制限
このモデルは、単一行の手書き文字画像の光学文字認識(OCR)に使用できます。
パラメータ
ハイパーパラメータの個別調整は行わず、ヒューリスティックなパラメータを使用しました。
Property |
Details |
learning_rate |
4e-5 |
epochs |
20 |
fp16 |
True |
max_length |
64 |
batch_size |
128 |
split train/dev |
90/10 |
評価指標
開発セットとテストセットでの評価結果は以下の通りです。
開発セット
Property |
Details |
セットのサイズ |
French Censusから700例 / 独自データセットから1600例 |
CER |
0.0575 |
WER |
0.1651 |
Loss |
0.5768 |
テストセット
Property |
Details |
セットのサイズ |
French Censusから730例 / 独自データセットから950例 |
CER |
0.09417 |
WER |
0.23485 |
Loss |
0.8700 |
微調整の手順
2つのデータセットと1つの生成データセットを用いて2段階で微調整を行いました。
- 名前、姓、職業、都市名、数字のリストと Text Data Generator を使用して70000行のデータを作成しました。
a. フランス語の語彙や名前に適応させるため、このデータセットのみで10エポック学習させました。
- 2つの手書きデータセットで20エポック微調整しました。
a. Constumらの French Census dataset。ハブ上にもデータセットを作成 しました。
b. 近日公開予定のフランスのアーカイブに関するデータセット - 11000行、手動でアノテーション付けされています。
🔧 技術詳細
TrOCRモデルは、画像を固定サイズのパッチ(解像度16x16)のシーケンスとしてモデルに入力し、線形埋め込みを行います。その後、絶対位置埋め込みを追加してからTransformerエンコーダのレイヤーに入力します。次に、Transformerテキストデコーダが自己回帰的にトークンを生成します。
📄 ライセンス
このモデルはMITライセンスの下で公開されています。
BibTeXエントリと引用情報
@miscellaneous{
author = {Arnault Gombert & Marie Beigelman},
title = {TrOCR in French: adapt to french archives},
year = {2023}
}