TrOCR(Transformer-based Optical Character Recognition)是微软提出的一种端到端基于 Transformer 架构的光学字符识别(OCR)模型,由预训练的图像 Transformer 编码器(如 DeiT)和文本 Transformer 解码器(如 RoBERTa 或 UniLM)组成,用于文本识别任务 。其架构将图像调整为 384×384 分辨率,分割成 16×16 的 patches 后输入图像 Transformer,解码器则生成词片级文本序列,无需 CNN 或 RNN,也无需外部语言模型 。
TrOCR 的优势包括:
- 端到端流程:结合文本检测和识别,无需复杂前后处理 。
- 多语言支持:预训练模型支持英语、法语、德语等,可针对其他语言微调 。
- 鲁棒性:对字体、方向、背景噪声变化具有鲁棒性,适用于手写体、印刷体甚至弯曲文本(通过微调) 。
使用示例(基于 Hugging Face):
from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image
processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-handwritten")
model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-handwritten")
image = Image.open("handwritten_note.jpg").convert("RGB")
pixel_values = processor(image, return_tensors="pt").pixel_values
generated_ids = model.generate(pixel_values)
text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(f"提取文本:{text}")