在本文中,探讨了由Clova AI研究开发的“字符区域感知文本检测”模型。这个基于深度学习的模型能够识别图像中的文本区域,并将其转换为边界框,这些边界框随后可以传递给光学字符识别(OCR)引擎以提高文本识别的准确性。
光学字符识别(OCR)技术在智能文档处理行业中被广泛使用。这项技术在医疗保健、金融科技、运输、物流和保险等行业有着广泛的应用。客户上传包含文本的图像,然后通过OCR流程得到图像的数字化输出。
典型的OCR流程包括边界检测、图像校正、图像预处理、文本检测、文本识别和后处理模块。边界检测用于从主图像中移除背景。图像校正和去畸变是为了提高文本检测和识别的准确性。图像预处理包括阈值处理或二值化、去噪、边缘增强等步骤,以提高图像中文本的质量。
文本检测是OCR流程中最重要的步骤之一,因为OCR引擎最适合使用单词级别的边界框,而不是整个图像。目前有多种技术如MSER、CRAFT、EAST、CTPN等可用于此步骤。
文本识别通常使用Pytesseract、Google Vision API、AWS API和Azure API等OCR引擎进行,随后是一个基于规则或统计的后处理步骤,以纠正OCR错误。这些OCR引擎也提供文本检测功能。然而,它们主要用于OCR文本识别引擎。
OCR技术
OCR技术通常用于研究照片中的文本、扫描文档、广告牌上的文本、风景中的文本等。文本可以是手写的、机器打印的或打字机打的。图像中的文本被转换为机器格式,通常用于数字化金融文件、保险文件、医疗文件、增强机器人视觉等任务。文本的数字化也可以用来检测欺诈性文件。
传统上,OCR是通过在字符级别检测文本然后数字化它们来实现的。在一种方法中,字符组可以作为图像上的一个块被检测到,它们的倾斜可以使用样条曲线来检测。在校正后,块可以通过考虑每个字符的几何特征来数字化。
然而,这些模型的训练是困难的,因为需要字符级别的注释。这些方法可以传统上一次学习一种字体。最近深度学习的进步使得跨各种字体实现OCR成为可能。这些先进的模型还能够数字化多种文本语言。
OCR技术的应用
OCR技术可以用来读取护照和身份证件。金融行业和旅游行业等各行各业需要检查护照和身份证件以验证个人身份。OCR技术可以实现快速读取和交叉验证这些文件中的文本数据。
OCR技术可以用来数字化医疗和商业文件。OCR技术可以加快数据输入,以提高治疗流程和保险索赔流程的医疗服务。同样,银行、投资者和其他贷款机构也可以从OCR技术中受益,通过快速读取图像中的文本,然后进行数据分析或自然语言处理。
OCR技术可以用于盲人的文本到语音系统。盲人可以从现成的OCR和文本到语音技术中受益,通过上传和数字化各种文件图像,如银行对账单、工资单、账单、发票等。
OCR技术可以用于欺诈检测。OCR技术检测到的单词和字段可以与特定文档的算法规则和个性化特征进行分析,以检查可能的欺诈行为。例如,各国的国家身份证有生成身份证号码的规则。同样,银行对账单可以分析欺诈性交易。
OCR技术可以用于读取验证码。验证码是用于验证用户身份和检测欺诈性机器人的安全关键词。OCR技术可以用来读取验证码,并设计用于用户身份验证的反机器人系统。
OCR技术可以用于交通系统。交通摄像头可以使用OCR技术读取车辆注册号。同样,自动驾驶汽车可以使用OCR技术读取标志、广告牌和车辆注册号,以高效导航。
OCR技术可以用于机器人视觉应用。机器人可以配备OCR技术,帮助人类进行数据输入;学生记笔记;为人类分析银行对账单、账单和工资单;为公司分析发票等。
CRAFT文本检测模型
过去几年中,许多深度学习模型被用于场景文本检测任务。然而,当图像中的文本是倾斜或弯曲时,这些模型的性能并不理想。CRAFT模型在各种基准数据集上的表现优于最先进的模型,如TotalText、CTW-1500等。该模型不仅对正常文本表现良好,对弯曲、长和变形的文本也表现良好。
传统的字符级边界框检测技术不足以解决这些领域的问题。此外,字符级文本处理的地面真实生成是一项繁琐且成本高昂的任务。CRAFT文本检测模型使用卷积神经网络模型来计算区域分数和亲和分数。区域分数用于定位字符区域,而亲和分数用于将字符分组到文本区域。
CRAFT使用基于VGG16模型的全卷积神经网络。通过提供单词级边界框进行推理。CRAFT文本检测模型在各种尺度上表现良好,从大到小的文本,并且被证明在未见过的数据集上也是有效的。然而,在阿拉伯文和孟加拉文文本上,这些文本的字符是连续的,模型的文本检测性能并不理想。
CTPN、EAST和MSER文本检测方法所花费的时间低于CRAFT文本检测引擎。然而,CRAFT更准确,当文本长、弯曲、旋转或变形时,边界框更精确。
实现
研究了Clova AI研究提供的Pytorch实现的CRAFT文本检测模型。Pytorch是由Meta维护的开源深度学习库,提供快速的张量计算和与GPU的集成。Pytorch被许多著名组织使用,包括特斯拉、优步等。Pytorch使用张量,这是多维数组的数字。
首先,从Clova AI研究提供的官方Pytorch CRAFT文本检测实现中克隆GitHub仓库。
git clone https://github.com/clovaai/CRAFT-pytorch.git
接下来,进入克隆的目录并使用以下命令安装依赖项:
pip install -r requirements.txt
可以使用预训练模型获得高文本检测精度。由于IP原因,公司没有提供完整的训练代码。可以从官方GitHub仓库提供的链接下载预训练模型:
https://github.com/clovaai/CRAFT-pytorch
可以通过以下命令使用预训练模型:
python test.py --trained_model=[weightfile] --test_folder=[folder path to test images]
结果图像将存储在./result中。结果将类似于标题图像中呈现的边界框。
首先克隆官方CRAFT GitHub仓库并安装所需的依赖项。
git clone https://github.com/clovaai/CRAFT-pytorch.git
pip install -r requirements.txt
接下来,进入克隆的仓库并创建一个‘test’文件夹,将上述图像复制到其中。将复制的图像重命名为‘id_craft_av.jpg’。
cd CRAFT-pytorch/
接下来,下载预训练模型文件“craft_mlt_25k.pth”并将其复制到CRAFT-pytorch/。
sudo wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1Jk4eGD7crsqCCg9C9VjCLkMN3ze8kutZ' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/1n/p')&id=1Jk4eGD7crsqCCg9C9VjCLkMN3ze8kutZ" -O craft_mlt_25k.pth && rm -rf /tmp/cookies.txt
上述命令用于从Google Drive下载大文件,使用它们的文件ID。现在,可以使用以下命令运行推理:
python3 test.py --trained_model=craft_mlt_25k.pth --test_folder=test/
结果存储在结果文件夹中。推理代码将向结果文件夹添加三个文件——‘res_id_craft_av.jpg’、‘res_id_craft_av.txt’和‘res_id_craft_av_mask.jpg’。‘res_id_craft_av.txt’包含检测到的单词的坐标。在‘res_id_craft_av.txt’文件中,以顺时针顺序给出检测到的单词四个角的坐标——x1,y1,x2,y2,x3,y3,x4,y4。