首页 > Ai资讯 > Ai知识库 > TrOCR——基于transformer模型的OCR手写文字识别

TrOCR——基于transformer模型的OCR手写文字识别

发布时间:2024年06月06日

前期我们使用大量的篇幅介绍了手写数字识别与手写文字识别,当然那里主要使用的是CNN卷积神经网络,利用CNN卷积神经网络来训练文字识别的模型。

IMG_256

这里一旦提到OCR相关的技术,肯定第一个想到的便是CNN卷积神经网络,毕竟CNN卷积神经网络在计算机视觉任务上起到了至关重要的作用。有关CNN卷积神经网络的相关知识与文章,可以参考往期的文章内容。

IMG_257

但是随着transformer模型attention注意力机制进入计算机视觉任务,我们同样可以使用transformer来进行计算机视觉方面的任务,比如对象检测,对象分类,对象分割等,这里毕竟著名的模型VITSwin便是成功的把transformer的注意力机制应用到了计算机视觉任务,那么基于transformer模型的OCR识别任务,便是理所当然的了。

TrOCRtransformer OCR的简写,是microsoft发布的一个OCR识别模型,光看这个模型的名字就知道此模型基于transformer模型,其模型架构如下,完全采用了标准的transformer模型。

IMG_258

编码器有预训练的Vision transformer组成,这里主要采用了DeIT作为Vision transformer模型。

解码器有预训练的language transformer模型组成,这里主要采用了RoBERTa UniLM 模型。

IMG_259

首先,图像被分解成小块,类似VIT模型的patch
embedding
操作,然后再添加位置编码。

第二步,我们将图像输入到 TrOCR 模型,该模型经过图像编码器,编码器主要包括多头注意力机制与feed forward 前馈神经网络

第三步便是我们的解码器部分,解码器的输入是标准的文本,其文本需要跟编码器的数据进行注意力机制的计算。

最后,我们对编码输出进行解码以获得图像中的文本。

需要注意的一件事是,在进入编码器之前,图像的大小已调整为 384×384 分辨率。 这是因为 DeIT 模型统一了输入图片的尺寸。

TrOCR 预训练模型

TrOCR 系列中的预训练模型是根据大规模综合生成的数据进行训练的。 该数据集包括数亿张打印文本行的图像。官方存储库释放了预训练阶段的三个模型。

TrOCR-Small 

TrOCR-Base 

TrOCR-Large

IMG_260

.

TrOCR 微调模型预训练阶段结束后,模型在 IAM 手写文本图像和 SROIE 打印收据数据集上进行了微调。IAM 手写数据集包含手写文本的图像。
微调该数据集使模型比其他模型更好地识别手写文本。同样,SROIE 数据集由数千个图像样本组成。 在此数据集上微调的模型在识别印刷文本方面表现非常好。像预训练阶段模型一样,IAM 手写模型和SROIE 打印数据集模型也分别包含三个维度的模型:


使用TrOCR 来进行图片文字识别,我们可以直接使用GitHub开源代码来实现

IMG_261

这里我们需要下载预训练模型,并传递一张需要的图片来进行识别即可。

当然既然是transformer模型,我们就可以使用hugging facetransformers库来实现上面的代码,且代码量就精简了很多。

这里我们首先需要安装transform库,并插入如下代码来进行TrOCR的文字识别。

首先需要使用TrOCRProcessor来进行图片的预处理,然后使用VisionEncoderDecoderModel建立一个OCR图片识别模型,然后打开一张需要识别的图片,当然图片需要使用processor进行图片的预处理操作,最后使用model函数进行图片的预测,预测完成后,就可以识别完整的文本文件了。

IMG_262

代码运行后,会自动下载相关模型,并输出最终的文本。

industry, " Mr. Brown commented icily. " Let us have a

这里我们可以看一下TrOCR的主要配置,可以看到整个数据库有50265个词表,且embedding维度为1024,每个encoderdecoder12层的结构,且每个注意力层有16个头,虽然TrOCR完全复制了整个transformer模型,但是更改了一些参数。

出自:https://mp.weixin.qq.com/s/tYb07dpzfIulG36K4OrLWA

启示科技