那么,有没有什么技术能帮助我们解决这些难题呢?有的,那就是OCR文字识别技术。
前面显示:让你把这个世界看得清清楚楚,真真切切
OCR英文全称是Optical Character Recognition,中文叫做光学字符识别。它是是实时高效的定位与识别图片中的所有文字信息,返回文字框位置与文字内容。支持多场景、任意版面下整图文字的识别,以及中英文、字母、数字的识别。简单来说,就是将图片上的文字内容,智能识别成为可编辑的文本,例如:
OCR本质是图像识别。其原理也和其他的图像识别问题基本一样。包含两大关键技术:文本检测和文字识别。先将图像中的特征进行提取并检测目标区域,之后对目标区域的字符进行分割和分类。
以深度学习兴起的时间为分割点,直至近五年之前,业界最为广泛使用的仍然是传统的OCR识别技术框架,而随着深度学习的崛起,基于这一技术的OCR识别框架以另外一种新的思路迅速突破了原有的技术瓶颈(如文字定位、二值化和文字分割等),并已在工业界得到广泛应用。
首先文本定位,接着进行倾斜文本矫正,之后分割出单字后,并对单字识别,最后基于统计模型(如隐马尔科夫链,HMM)进行语义纠错。
复杂背景、艺术字体、低分辨率、非均匀光照、图像退化、字符形变、多语言混合、文本复杂版式、检测框字符残缺,等等。
从几个方面入手。一是使用场景,另一方面是从技术上进行改进。腾讯优图实验室在文本检测技术方进行了深度优化,提出了Compact Inception,通过设计合理的网络结构来提升各尺度的文字检测/提取能力。同时引入RNN多层自适应网络和Refinement结构来提升检测完整性和准确性。
我们知道身份证识别可广泛应用在金融行业中,在身份认证中,可以减少用户的信息输入,提升效率,提高用户体验,营业执照的识别完全省去了手工录入的繁琐,还可以为企业省去大量的人力资源成本,这些场景大家都已经比较熟悉。
对于通用印刷体,腾讯优图实验室自主设计一整套全方位多尺度文字识别引擎,可攻破模糊,散焦,透视,文字部分遮挡的问题,识别准确率高达90%以上,处于业界领先水平。使用场景广泛,例如对任意版面上图像的文字识别,可广泛应用在印刷文档、广告图、医疗、物流等行业中的识别。
下面调用百度API进行识别:
from aip import AipOcr
APP_ID = "10739584"
API_KEY = "RQTE6EpB6y4OXUA2iNKyPMhR"
SECRET_KEY = "ibD0O15GOC949V2V16nwOkZZcVdwObcw"
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
def scrope(pic_path):
image = get_file_content(pic_path)
""" 如果有可选参数 """
options = {}
options["language_type"] = "CHN_ENG"
options["detect_direction"] = "true"
options["detect_language"] = "true"
options["probability"] = "true"
print("正在识别图片信息......")
""" 带参数调用通用文字识别, 图片参数为本地图片 """
result=client.basicGeneral(image, options)
src=result['words_result']
print(len(src))
dicfile=open('file.txt','a+',encoding='utf-8')
for key in range(len(src)):
dicfile.write(src[key]['words'])
dicfile.write('\n')
print(src[key]['words'])
dicfile.close()
pic_path='ocr_test.png'
scrope(pic_path)