🚀 TrOCR(基础大小模型,在IAM数据集上微调)
TrOCR是一个基于Transformer的光学字符识别(OCR)模型,它在IAM数据集上进行了微调。该模型由Li等人在论文TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models中提出,并首次在这个仓库中发布。
⚠️ 免责声明:TrOCR的发布团队并未为该模型撰写模型卡片,此卡片由Hugging Face团队编写。
🚀 快速开始
你可以使用这个原始模型对单行文本图像进行光学字符识别(OCR)。可以访问模型中心查找针对你感兴趣的任务进行微调的版本。
✨ 主要特性
TrOCR模型是一个编码器 - 解码器模型,由一个图像Transformer作为编码器,一个文本Transformer作为解码器组成。图像编码器的权重初始化为BEiT的权重,而文本解码器的权重初始化为RoBERTa的权重。
图像以固定大小的图像块序列(分辨率为16x16)的形式输入到模型中,并进行线性嵌入。在将序列输入到Transformer编码器的各层之前,还会添加绝对位置嵌入。然后,Transformer文本解码器自回归地生成标记。
💻 使用示例
基础用法
from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image
import requests
url = 'https://fki.tic.heia-fr.ch/static/img/a01-122-02-00.jpg'
image = Image.open(requests.get(url, stream=True).raw).convert("RGB")
processor = TrOCRProcessor.from_pretrained('microsoft/trocr-base-handwritten')
model = VisionEncoderDecoderModel.from_pretrained('microsoft/trocr-base-handwritten')
pixel_values = processor(images=image, return_tensors="pt").pixel_values
generated_ids = model.generate(pixel_values)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
🔧 技术细节
TrOCR模型是一个编码器 - 解码器架构。编码器部分是一个图像Transformer,它将输入的图像转换为特征表示。解码器部分是一个文本Transformer,它根据编码器的输出自回归地生成文本。
图像输入时会被分割成固定大小的图像块(16x16),并进行线性嵌入。在输入到编码器之前,会添加绝对位置嵌入,以保留图像中各部分的位置信息。解码器则根据编码器的输出逐步生成文本标记。
📚 详细文档
BibTeX引用信息
@misc{li2021trocr,
title={TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models},
author={Minghao Li and Tengchao Lv and Lei Cui and Yijuan Lu and Dinei Florencio and Cha Zhang and Zhoujun Li and Furu Wei},
year={2021},
eprint={2109.10282},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
📄 许可证
本项目采用MIT许可证。