三年磨一剑——微信轻松提取图片文字ocr算法文本行

2021年1月, 微信发布了微信8.0, 这次更新支持图片文字提取的功能。用户在聊天界面和朋友圈中长按图片就可以提取图片中文字,然后一键转发、复制或收藏。图片文字提取功能基于微信自研OCR技术,本文将介绍微信OCR能力是如何落地文字提取业务的。

一、背景

图片提取文字功能以OCR技术为基础,识别出图片中的文字并进行排版展示给用户。

OCR技术, 即Optical Character Recognition(光学字符识别),用于识别图像中的文字,常见的有卡证识别、票据识别和通用识别等。OCR具有非常广泛的应用场景。如目前火热的教育场景中拍照搜题和智能作业批改、金融场景中票据识别、办公场景的文档电子化、交通场景中的停车管理等,都用到了OCR的识别能力。

微信OCR能力目前接入了微信小程序服务市场,助力企业的公众号和小程序业务需求更好更高效地落地,同时也在微信客户端的长按图片提取文字、银行卡绑卡、表情搜索和推荐等业务中成功落地。

二、难点与挑战

1. 如何判断图像中是否存在文字?

长按图片的种类复杂多类,存在商品、人物、风景、汽车等各种可能性,其中大部分图片可能没有文字,我们希望只处理有文字的图片,过滤无文字图片。

2. 如何判断文本图像的类别?

对于文本图像,同样存在复杂多样的问题,比如证件类图像、手写体图像、表格图像等等,OCR识别有大量的垂类场景,依靠单一的识别模型识别能力可能不足,准确率不够好。因此我们希望能判断文本图像的类型,根据不同类别选择不同的识别模型。

3. 如何优化通用识别算法,达到效果和效率的平衡?

通用OCR的识别能力是业务使用的主要能力,我们希望通用OCR识别的效果尽可能好,能涵盖大部分用户的拍摄场景需求,同时落地业务也需要考虑成本。

4. 如何进行版面分析?

文本识别出来的结果是孤立的文本行内容,展示给用户一行行的文字,不符合用户的阅读习惯,用户后续对比和使用时也会存在困难。我们希望能对识别出来的文本行进行合并排版,以用户易于阅读的方式展示。

三、文字提取整体解决方案

针对上面分析的难点和挑战,我们设计了下面的提取文字流程:

图3 图片提取文字的完整流程

快速文字判定模块用于快速判断图像中是否存在文字,如果存在文字,弹出提取文字入口。

文本图像分类模块用于判断文本图像的类别,是垂类文本场景还是通用文本场景等,根据类别选择不同的识别路线。垂类文本识别包括证件识别、表格识别等,可以调用相关的API进行识别,我们也会根据线上用户数据分析用户需求,不断扩展新的垂类文本识别能力。

通用文本识别包括文本检测和文本识别两个阶段,文本检测用于定位文字区域,文本识别用于识别文本行的内容。

版面分析模块将识别出来的文本按易于阅读的方式进行排版展示。

下面将对流程中的各个模块中的算法进行介绍。

1. 快速文字判定

业务场景的图像丰富多样,存在无文字图像和有文本图像,且文本图像中可能存在不同的语种。

图4 不同类型图像示例

我们的需求:

快速判断图像中是否存在中英文本;

兼容长按翻译,同时需要判断文本中的文本语种;

移动端部署,速度和模型大小要求高。

可以采用普通的图像分类来判断图像上是否有文字及文本语种类别,但存在下面的一些问题:

图片复杂,分类准确率低;

文本占比小,存在误判;

图片中可能存在多语种,语种之间有相似性;

无法确定各语种的文本在图像中区域和所占的比例。

我们提出了一个可以用于移动端部署的快速多语种文本分类检测网络,判断不同区域的文本所属的语种类别,可以计算得到图像中是否存在文字以及文字语种以及所占面积等。目前支持拉丁(英文)、中文、日文、韩文、泰文、俄文、越南语等语种的检测和分类。

该模块采用超轻量级的CNN网络,在移动端平均耗时约80ms,具有较高的检测召回和分类精度,能够快速过滤不必要的图像。

图5 多语种文本分类检测网络

2. 文本图像分类

文本图像分类标签体系融入到长按图片分类标签体系中。采用多标签分类来适应复杂图像场景。目前文本图像类别分为证件票据和文档两大类别,后续可能根据需求扩充。

图6 长按图片分类标签体系

3. 通用OCR识别

(1)文本检测

常用的基于深度学习的文本检测方法一般可以分为基于回归的、基于分割的两大类,当然还有一些将两者进行结合的方法。

图7 常用文本检测算法

基于回归的方法分为 box回归和 像素值回归。

采用box回归的方法主要有CTPN、Textbox系列和EAST,这类算法对规则形状文本检测效果较好,但无法准确检测不规则形状文本,对过长文本效果也不太好。

像素值回归的方法主要有CRAFT和SA-Text,这类算法能够检测弯曲文本且对小文本效果优秀但是实时性能不够。

基于分割的算法,如PSENet,这类算法不受文本形状的限制,对各种形状的文本都能取得较好的效果,但是后处理通常比较复杂,耗时较多。

我们采用了基于实例分割的DBNet算法,DBNet将二值化进行近似,使其可导,融入训练,从而获取更准确的边界,大大降低了后处理的耗时。此外,DB使用轻量级网络也有很好的表现,且长文本不易切断。

图8 DBNet模型结构

基于速度和性能的平衡的考虑,backbone我们选择了轻量级网络mobilenetv3,并对模型的header做了一些裁剪,使得模型大小减少、预测速度提升,但性能轻微下降。针对小文本、超长图像检测和一些特殊场景图像检测,我们也做了一些相应的优化。

此外为了适应多方向的文本图像,我们在检测模型上加入了方向判定分支,支持判断文本框的文本方向。

在模型训练上,我们采用了模型蒸馏的方法,先训练resnet50模型作为teacher模型,然后加入mobilenetv3模型作为student模型联合训练,最终的性能相对不蒸馏的模型能提升1个点。

在模型部署上,采用TensorRT部署,线上T4机型平均耗时小于30ms。

(2)文本识别

文本检测需要的训练数据相对较少,文本识别则需要大量的数据进行训练,特别是中文字符数较多,存在生僻字等,训练数据获取困难。

文本识别存在下面的一些困难:

通用场景复杂,文字多样,各种字体和风格的文字都可能存在,数据难以采集;

生僻字问题,字符不均衡;

相似字问题。

针对上面的问题,我们需要使用 数据合成工具来合成大量训练数据。

数据合成工具

TextRender 合成文本行识别数据;

StyleText 合成文本行识别数据。

TextRender是利用图像处理的方法来合成数据,对已有语料或字符表字符随机组合,结合模糊、倾斜、透视变换和加背景等方法,生成接近真实场景中的文字图片,生成字符的数量、字体、大小和风格可控,速度快,是我们主要采用的合成方法。

图9 TextRender示例

StyleText是采用模型风格迁移的方法,针对实际场景真实数据严重不足,TextRender无法合成文字风格(字体、颜色、间距、背景)的问题的补充,利用少许目标场景图像就可以批量合成大量与目标场景风格相近的文本图像。我们主要利用其补充badcase的数据。

图10 StyleText示例

文本识别算法

目前主流的是基于深度学习的端到端的文字识别,将其转化为序列学习问题,两大主流技术是CRNN OCR 和Attention OCR。CRNN OCR借鉴了语音识别思想,引入LSTM + CTC 的建模方式解决不定长序列对齐问题。Attention OCR借鉴了机器翻译中的Encoder-Decoder模型,并加入了注意力(Attention)机制来帮助特征对齐。近年来还出现了一些新的方法,如ACE方法,采用统计时间维度上各字符的数量进行监督的方法来进行文本识别,也取得了不错的效果。

图11 文本识别算法对比

在模型设计上,我们采用了结合上面3种方法的多任务文本识别模型。在训练时,以CTC为主,Attention Decoder和ACE辅助训练。在预测时,考虑到速度和性能,只采用CTC进行解码预测。多任务可以提高模型的泛化性,同时如果对预测时间要求不高,多结果也可以提供更多的选择和对比。

图12 多任务文本识别模型

在模型训练上,我们采用了多种文本图像增强的方法来提升模型的泛化性和鲁棒性,特别是为了对弯曲扭曲变形文本有更好的识别效果,我们采用了在线文本distort变换,识别准确率提升1-2个点。

图13 在线文本图像增强

此外,针对生僻字和形似字问题,我们对CTC loss进行优化,加入了focal loss 和center loss辅助训练,在形似字测试集上能提升2-3个点。

4. 版面分析

版面分析主要用于分析哪些文本行属于同一段落,合并文本行,哪些区域是表格等目前有基于深度学习分割的方法和基于规则的方法。

基于深度学习的版面分割方法:

数据标注困难;

部署:模型大小 + 耗时;

泛化性不够:依赖训练数据;

解决badcase需重训模型,不够灵活。

基于几何规则的版面分析方法:

依赖写好的规则;

快速修复badcase;

耗时小,部署简单。

基于上面的分析比较,我们采用自研的基于几何规则的版面分析方法,通过DFS的文本框合并,取得了不错的排版效果。

5. 结果展示对比

与竞品对比优势如下所示:

(1)支持垂直文本识别

(2)支持证件图片精确提取

(3)排版更合理

(4)过滤无意义文本

四、总结与展望

提取文字作为一个服务用户的工具,我们希望能提供给用户尽可能准确和高效的结果。后续,我们将根据用户的提取需求,进一步扩展垂类场景,同时打磨更通用的自然场景文本识别算法。而OCR作为图像和文本之前的桥梁,我们也将继续深耕微信OCR,更好地为业务服务。最后也欢迎大家扫码体验OCR体验工具。

参考文献

1、Edit Text in the Wild, Liang Wu, Chengquan Zhang, Jiaming Liu, Junyu Han, Jingtuo Liu, Errui Ding, Xiang Bai ,ACM MM2019

2、Learn to Augment: Joint Data Augmentation and Network Optimization for Text Recognition, Luo.C; Zhu,Y; and Wang,Y ,CVPR 2020

3、Real-time Scene Text Detection with Differentiable Binarization,Minghui Liao, Zhaoyi Wan, Cong Yao, Kai Chen, Xiang Bai, AAAI 2020

4、EAST: An Efficient and Accurate Scene Text Detector,Xinyu Zhou, Cong Yao, He Wen, Yuzhi Wang, Shuchang Zhou, Weiran He, Jiajun Liang,CVPR 2017

5、ASTER: An Attentional Scene Text Recognizer with Flexible Rectification,Baoguang Shi, Mingkun Yang, Xinggang Wang, Pengyuan Lyu, Cong Yao, and Xiang Ba, PAMI 2018

6、Aggregation Cross-Entropy for Sequence Recognition. Zecheng Xie, Yaoxiong Huang, Yuanzhi Zhu, Lianwen Jin, Yuliang Liu and Lele Xie. CVPR. 2019

7、Synthetic Data for Text Localisation in Natural Images, Ankush Gupta, Andrea Vedaldi, Andrew Zisserman, CVPR 2016.

8、Detecting Oriented Text in Natural Images by Linking Segments,Baoguang Shi, Xiang Bai, Serge Belongie, CVPR 2017

9、TextBoxes++: A Single-Shot Oriented Scene Text Detector, Minghui Liao, Baoguang Shi, Xiang Bai,AAAI2018

10、Shape Robust Text Detection with Progressive Scale Expansion Network,Wenhai Wang, Enze Xie, Xiang Li, Wenbo Hou, Tong Lu, Gang Yu, Shuai Shao,CVPR 2019

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

THE END
0.ocr文字识别mac有哪些功能?在图片中提取文字的操作方法是什么?很多朋友在工作的时候,都会遇到把图片中的文字提取出来的问题,我们可以借助ocr文字识别软件来操作,那么ocr文字识别mac有哪些功能?在图片中提取文字的操作方法是什么呢?下面就来说说。 ocr文字识别mac有哪些功能? ocr文字识别mac是一款集图片OCR识别、PDF OCR识别、CAJ转PDF、CAJ转Word、PDF翻译、PDF转换、电子书转换等jvzquC41yy}/hx}kvuugv€ftg0io1|hcppks1sncqenfpp44924ivvq
1.图片翻译在线图片识别翻译在线免费版图片翻译器,可以快速将图片中的语言翻译成对应的其它语言,并且支持回填到原图片中,翻译速度快,准确率高,是一款易用的图片翻译、图片识别翻译工具.jvzquC41crv/z~slkgveh7hqo1zvrrfphctzk8
2.AppStore上的“图片文字提取4. 支持图片转文字 本产品是一款提取图片中的文字信息的OCR软件,支持图片转文字,图片转Excel,批量识别图片,PDF文件扫描,任何印刷文本等都能扫描识别,提取文字仅仅只需2步就可以完成,支持把提取到的内容一键转换为epub / pdf / docx / xlsx等格式,是一款小巧的数字化文档管理工具,它能够极大的提高您的办公效率。 应用特色: jvzquC41kv{og|3crrrf0lto1et0cyu1kf75899724;7
3.Capture2Text(图片文字识别工具)官方下载7、例如你当前准备识别英文,就需要在OCR界面设置English; 8、也支持对日文识别,直接复制日文; 9、Capture2Text使用非常复杂,并且是英文的界面,小编为你推荐一款新的图片文字识别软件; 软件特色 1、Capture2Text可以识别的类型多,支持的语言也多; 2、安装不同国家的文字选择对应的OCR识别方案; jvzquC41uqlu0
4.python爬虫反爬之图片验证功能实现python跨平台支持: Tesseract-OCR可在多个操作系统上运行,包括Windows、Linux和macOS等。这使得它成为一个跨平台的解决方案,可以在各种环境中使用。 多语言支持: Tesseract-OCR支持超过100种语言的文字识别,包括中文、英文、法文、德文、日文等。这使得它在全球范围内都有广泛的应用。 jvzquC41yy}/lk:30pku1y~vjqt05:<75:ox27mvo
5.图片翻译识图翻译拍照图片在线识别翻译图片翻译服务,基于文字识别与文本翻译技术,满足用户翻译图片文字、识图翻译的需求,支持多国语言的图片翻译,提升输入效率。jvzquC41ck4zq~icq0ipo8utqf{dv6kcp{o.rrhvwtk/u
6.LetterSnapOCR快速识别图片上的文字[iPhone/iPad]Google Cloud Vision 支持 Lettersnap。所以几乎任何东西都可以丢进去 —— 奇怪的字体、彩色背景、中文和日文,甚至倾斜的文字。谷歌的先进算法和高性能机器将快速而智能地识别您图片中的文字。 LetterSnap OCR 会自动保存所有扫描并识别后的文字,并不包含照片。jvzquC41yy}/cyukpp4dqv4ngvzft|scr/udt8
7.文字识别OCR产品功能文字识别OCR产品描述支持对图片内多种语言文字自动检测和识别,返回语种类型、文字框位置与文字内容,无需用户手动选择语言种类。除中英文外,现已支持日文、韩文、西班牙文、法文、德文、葡萄牙文等多种语言。 通用手写体识别 支持对图片内手写体文字的检测和识别,返回文字框位置与文字内容,支持多场景、任意版面下整图文字中的手写中英文、jvzquC41gerpwm3322>70ls1qr3iguu/egtug{4fqe5bt}neng552@66
8.天若ocr识别真的好用吗?手机如何识别图片中文字?相信在工作当中有很多人都需要识别图片中的文字,可是想要识别图片中的文字,就必须要使用专门的软件才行,而识别软件中有很多人都听说过天若ocr的大名,那么天若ocr识别真的好用吗?下文中就是相关介绍,需要识别图片的人可以看看。 天若ocr识别真的好用吗? jvzquC41yy}/hx}kvuugv€ftg0io1|hcppks1sncqenfpp459:4ivvq
9.如何把图片文字转化成Word文字选取要转换的区域,点击“确定”按钮,然后工具会进行自动识别,转换结果如下: 步骤四、对用相机拍摄的外文书本图片文字转换成word也是可以的,下面给大家介绍一下具体的操作步骤,先打开一张日文的文字图片,具体操作如下图: 选取要转换的日文文字区域,然后软件按会自动弹出一个框,然后在语种一栏选择“日文”就可以,然后点jvzquC41i0vdqwqkpg4dqv3ep1~06?816892;950jvsm
10.竖排的日语图片如何识别横排翻译?竖排日语图片OCR识别并翻译的教程来😭 对着竖排日语图片手敲文字到崩溃,翻译软件还老是断句错 —— 直到被安利咕嘎OCR日语横竖排专用版,现在处理竖排日文快到飞起,连细节都贴心到哭! 🌟 这些场景一定要用它!细节控狂喜! 看日文漫画 / 插画集 对话框里的竖排小字、作者签名栏的手写日文,放大拍照后框选识别,连 “の”“を” 这种小假名都不jvzquC41o0ypj~3eqo5b1B7893?68>d342:3:>>;1