🚀 TrOCR(小型模型,仅预训练)
TrOCR是一个仅经过预训练的模型。它由Li等人在论文TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models中提出,并首次在此仓库中发布。
🚀 快速开始
TrOCR模型可用于单文本行图像的光学字符识别(OCR)。你可以在模型中心查找针对你感兴趣的任务进行微调的版本。
✨ 主要特性
- TrOCR是一个编码器 - 解码器模型,由作为编码器的图像Transformer和作为解码器的文本Transformer组成。
- 图像编码器使用DeiT的权重进行初始化,文本解码器使用UniLM的权重进行初始化。
- 图像以固定大小的图像块(分辨率为16x16)序列的形式输入模型,并进行线性嵌入。在将序列输入到Transformer编码器层之前,还会添加绝对位置嵌入。然后,Transformer文本解码器自回归地生成标记。
📚 详细文档
模型描述
TrOCR模型是一个编码器 - 解码器模型,由作为编码器的图像Transformer和作为解码器的文本Transformer组成。图像编码器使用DeiT的权重进行初始化,而文本解码器使用UniLM的权重进行初始化。
图像以固定大小的图像块(分辨率为16x16)序列的形式呈现给模型,并进行线性嵌入。在将序列输入到Transformer编码器层之前,还会添加绝对位置嵌入。接下来,Transformer文本解码器自回归地生成标记。
预期用途和限制
你可以使用原始模型对单文本行图像进行光学字符识别(OCR)。请查看模型中心,以查找针对你感兴趣的任务进行微调的版本。
如何使用
以下是在PyTorch中使用此模型的方法:
from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image
import requests
import torch
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-small-stage1')
model = VisionEncoderDecoderModel.from_pretrained('microsoft/trocr-small-stage1')
pixel_values = processor(image, return_tensors="pt").pixel_values
decoder_input_ids = torch.tensor([[model.config.decoder.decoder_start_token_id]])
outputs = model(pixel_values=pixel_values, decoder_input_ids=decoder_input_ids)
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}
}