许可证: mit
语言:
- fr
任务标签: 图像转文本
标签:
- trocr
- 视觉编码器-解码器
评估指标:
- 字符错误率(cer)
- 单词错误率(wer)
示例:
- 图片链接: >-
https://raw.githubusercontent.com/agombert/trocr-base-printed-fr/main/sample_imgs/3.jpg
示例标题: 示例1
- 图片链接: >-
https://raw.githubusercontent.com/agombert/trocr-base-printed-fr/main/sample_imgs/0.jpg
示例标题: 示例2
- 图片链接: >-
https://raw.githubusercontent.com/agombert/trocr-base-printed-fr/main/sample_imgs/1.jpg
示例标题: 示例3
法语版TrOCR
概述
TrOCR尚未发布法语版本,因此我们训练了一个法语概念验证模型。建议基于该模型收集更多数据,用于第一阶段的补充训练或第二阶段的微调。
这是论文TrOCR: 基于Transformer的预训练光学字符识别模型中英文trOCR模型的特殊变体,最初发布于该代码库。
特别感谢daekun-ml和Niels Rogge的教程和代码支持,使我们能够发布此模型。
数据收集
文本数据
我们从以下数据集中随机采样,创建了约72.3万条训练样本:
我们对各数据集进行部分采集后,随机截取句子形成最终训练集。
图像数据
使用TrOCR论文中介绍的TextRecognitionDataGenerator工具生成图像数据(https://github.com/Belval/TextRecognitionDataGenerator)。生成命令如下:
python3 ./trdg/run.py -i ocr_dataset_poc.txt -w 5 -t {核心数} -f 64 -l ko -c {样本数} -na 2 --output_dir {输出目录}
训练过程
基础模型
编码器采用facebook/deit-base-distilled-patch16-384
,解码器采用camembert-base
。相比从microsoft/trocr-base-stage1
初始化权重更易训练。
参数设置
采用启发式参数(未进行超参数调优):
- 学习率 = 4e-5
- 训练轮次 = 25
- 混合精度训练 = True
- 最大序列长度 = 32
开发集结果
测试集规模7.2万条,获得以下指标:
- 字符错误率(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/