项目介绍:TrOCR Base-Stage1
项目背景
TrOCR是一个基于Transformer的光学字符识别(OCR)模型。这个项目由Li等人在论文《TrOCR: Transformer-based Optical Character Recognition with Pre-trained Models》中引入,并首次在GitHub上发布。TrOCR的主要目标是通过结合图像和文本的Transformer模型,提高OCR的精度和效率。
模型描述
TrOCR是一种编码器-解码器模型,分为两个部分:图像Transformer作为编码器和文本Transformer作为解码器。其中,图像编码器的初始化来源于BEiT模型的权重,而文本解码器则是从RoBERTa模型的权重初始化。图像输入会被分解为固定大小(16x16分辨率)的图像块,然后进行线性嵌入。接着,通过增加绝对位置嵌入,模型将这一序列输入到Transformer编码器中,随后文本解码器自回归地生成字符序列。
预期用途与限制
TrOCR模型可以用于对单行文本图像进行光学字符识别(OCR),适用于需要将图片中的文字转换为文本的场景。不过,默认提供的是未经过任务微调的基础模型,因此在特定任务上的表现可能需要进一步的训练和优化。用户可以在模型中心查找相关任务的微调版本。
使用方法
下面是如何在PyTorch中使用TrOCR模型的简单示例:
from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image
import requests
# 从IAM数据库加载图像
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-stage1')
model = VisionEncoderDecoderModel.from_pretrained('microsoft/trocr-base-stage1')
# 训练过程
pixel_values = processor(image, return_tensors="pt").pixel_values # 批大小为1
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}
}
TrOCR基于先进的模型架构与预训练技术,为OCR任务提供了一个可靠的技术选择,对于需要处理大量文本图像识别的研究人员和开发者来说,是一款值得关注的工具。