当前位置: 首页 > news >正文

初窥强大,AI识别技术实现图像转文字(OCR技术)

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️
🐴作者:秋无之地

🐴简介:CSDN爬虫、后端、大数据、人工智能领域创作者。目前从事python全栈、爬虫和人工智能等相关工作,主要擅长领域有:python全栈、爬虫、大数据开发、人工智能等。

🐴欢迎小伙伴们点赞👍🏻、收藏⭐️、留言💬、关注🤝,关注必回关

前言:

上一篇讲到采用AI技术Docling实现高效地解析和转换多种文档格式。无论是PDF、Word文档,还是PPT、Excel表格,Docling都能够高效地解析和转换多种文档格式,将文档内容以HTML、Markdown和JSON等格式呈现,并支持OCR识别和表格结构的解析。

今天就来“初窥强大”,AI识别技术实现图像转文字(OCR技术)。

一、OCR技术的介绍

1、OCR技术是个啥

OCR(Optical Character Recognition,光学字符识别)技术是一种将图像中的文字转换为计算机可编辑文本格式的技术。

OCR 技术凭借其高效、准确的文字识别能力,在众多行业和领域都有广泛应用,以下是一些主要的方面。

金融行业

  • 票据处理:银行等金融机构每天会处理大量的票据,如支票、汇票、存单等。OCR 技术可快速准确地识别票据上的文字信息,包括金额、账号、日期等,实现票据处理的自动化,提高处理效率,降低人工录入的错误率。
  • 信用卡审批:在信用卡申请审批过程中,OCR 技术可以识别申请人提交的身份证、工作证明等文件上的文字信息,快速提取关键数据,辅助银行进行风险评估和审批决策。

医疗行业

  • 病历管理:医院的病历资料通常包含大量的文字信息,使用 OCR 技术可以将纸质病历快速转换为电子文本,方便医生查阅、检索和分析患者的病史、诊断结果等信息,提高医疗服务的效率和质量。
  • 医疗报告解读:对于一些医学检验报告、影像诊断报告等,OCR 技术能够识别其中的文字内容,结合自然语言处理技术,帮助医生更快速地理解报告信息,做出准确的诊断。

教育行业

  • 试卷批改:在考试阅卷过程中,OCR 技术可以识别学生答题卡上的答案信息,实现客观题的自动批改,提高阅卷效率。同时,对于一些手写的主观题,也可以通过 OCR 技术进行文字识别,辅助教师进行批改。
  • 数字化教学资源建设:将纸质教材、教案、文献资料等转化为电子文本,便于制作数字化教学资源,如电子课件、在线课程等,方便学生学习和教师教学。

物流行业

  • 快递面单识别:快递包裹上的面单包含了收件人、寄件人、地址等重要信息,OCR 技术可以快速准确地识别这些信息,实现包裹信息的自动化录入和跟踪,提高物流配送的效率和准确性。
  • 物流单据处理:在物流运输过程中,涉及到各种单据,如托运单、提货单等。OCR 技术可以对这些单据上的文字信息进行识别和提取,实现物流信息的数字化管理,方便物流企业进行业务调度和跟踪。
2、技术原理
  • 图像预处理:对输入的图像进行处理,包括灰度化、降噪、二值化、倾斜校正等操作,以提高图像的质量,便于后续的字符分割和识别。例如,通过灰度化将彩色图像转换为黑白图像,减少数据量;利用降噪算法去除图像中的噪声点,使文字更加清晰。
  • 字符分割:尝试将文本中的字符分割开,对于手写文字或不规则排列的文字,这一步尤为重要。方法包括基于字符间距、笔画连接等特征进行分割。比如在识别手写体时,根据笔画的走势和间隔,将每个字符准确地分离出来。
  • 特征提取:提取字符的特征,如笔画特征、轮廓特征、结构特征等。这些特征是识别字符的关键依据,不同的字体、字号可能具有不同的特征组合。以汉字为例,可能会提取笔画的端点、交叉点、弯曲度等特征。
  • 分类识别:将提取的特征与预定义字库对比,以找出最匹配的字符。常用的分类方法包括模板匹配、神经网络、支持向量机等。例如模板匹配就是将待识别字符与字库中的模板进行逐一比对,计算相似度,选择相似度最高的模板对应的字符作为识别结果。
  • 后处理:对识别结果进行校正、修补和质量评估等处理。如通过语言模型、上下文信息来纠正可能出现的识别错误,提高识别的准确性和可靠性。比如在一段英文文本中,根据语法和词汇搭配,对识别出的单词进行校正。

3、技术应用
  • 文档处理:能快速将纸质文档中的文字转换为电子文本,便于编辑、存储和检索,提高办公效率。如将大量的纸质合同、文件转换为电子文档,方便进行文字搜索和内容修改。
  • 数字图书馆:把扫描的图书、文献等转化为可搜索的文本,既方便读者查阅,也有利于图书资源的长期保存和传播。
  • 车牌识别:在智能交通系统中,用于识别车辆号牌,实现自动收费、违章监控等功能。通过对车牌图像的处理和字符识别,快速准确地获取车牌号码信息。
  • 身份证识别:在公安、银行等领域,快速识别身份证上的文字信息,用于身份验证和信息录入,提高业务办理的效率和准确性。
  • 图像识别:在处理包含文字的图像时,能够提取其中的文字信息,为图像分析和理解提供支持。比如在分析广告图片、宣传海报等时,提取其中的文字内容进行语义分析。

二、OCR技术的接入

1、选择第三方OCR服务

看到这里,或许有人疑惑,为啥要接入第三方的服务,自己安装训练不可以吗?

可以,但效率太低,而且第三方的服务已经很成熟,而且有些是免费试用的或有一定试用额度的。

常用的第三方OCR服务有如下几种:

  • 阿里云的OCR服务
  • 百度的OCR服务

  • 华为云的OCR服务

基于识别准确度、使用成本和接入复杂度,优先选择阿里云的OCR服务

2、开通服务

在阿里云控制台——>搜索“文字识别”——>服务管理与开通,点击开通,结果如下:

  • 统一识别有每月200次的额度
  • 通用票证识别免费试用

3、根据开发文档安装SDK

打开“通用票证识别”的文档:RecognizeGeneralStructure - 通用票证抽取_文字识别(OCR)-阿里云帮助中心

点击“调试页面”,可以看到SDK的python示例:

安装SDK命令:

pip install alibabacloud_ocr_api20210707==3.1.2
4、连接服务
@staticmethod
def create_client() -> ocr_api20210707Client:"""使用AK&SK初始化账号Client@return: Client@throws Exception"""# 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。# 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html。config = open_api_models.Config(# 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。,access_key_id='xxx',# 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,access_key_secret='xxx')# Endpoint 请参考 https://api.aliyun.com/product/ocr-apiconfig.endpoint = f'ocr-api.cn-hangzhou.aliyuncs.com'return ocr_api20210707Client(config)
5、调用函数
@staticmethod
def main(img_link=''):client = aliyunOcrImgPiao.create_client()recognize_general_structure_request = ocr_api_20210707_models.RecognizeGeneralStructureRequest(url=img_link,keys=['统一社会信用代码','名称类型','公司类型','注册资本','住所','成立日期','法定代表人'])runtime = util_models.RuntimeOptions()img_info = {}try:# 复制代码运行请自行打印 API 的返回值resp = client.recognize_general_structure_with_options(recognize_general_structure_request, runtime)# print(resp.body.data)for i in resp.body.data.sub_images:img_info = i.kv_info.databreakexcept Exception as error:# 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。# 错误 messageprint(error)# 诊断地址print(error)UtilClient.assert_as_string(error)#更改keynew_info = {'creditCode':img_info['统一社会信用代码'],'legalPerson':img_info['法定代表人'],'companyName': img_info['名称类型'],'companyType':img_info['公司类型'],'businessAddress':img_info['住所'],'RegistrationDate':img_info['成立日期'],'registeredCapital':img_info['注册资本'],}print("输出结果:",new_info)return new_info

三、完整代码

# -*- coding: utf-8 -*-
import os
import sysfrom typing import Listfrom alibabacloud_ocr_api20210707.client import Client as ocr_api20210707Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_ocr_api20210707 import models as ocr_api_20210707_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClientclass aliyunOcrImgPiao:'''阿里云票证OCR识别(不限额度)'''def __init__(self):pass@staticmethoddef create_client() -> ocr_api20210707Client:"""使用AK&SK初始化账号Client@return: Client@throws Exception"""# 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。# 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html。config = open_api_models.Config(# 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。,access_key_id='xxx',# 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,access_key_secret='xxx')# Endpoint 请参考 https://api.aliyun.com/product/ocr-apiconfig.endpoint = f'ocr-api.cn-hangzhou.aliyuncs.com'return ocr_api20210707Client(config)@staticmethoddef main(img_link=''):client = aliyunOcrImgPiao.create_client()recognize_general_structure_request = ocr_api_20210707_models.RecognizeGeneralStructureRequest(url=img_link,keys=['统一社会信用代码','名称类型','公司类型','注册资本','住所','成立日期','法定代表人'])runtime = util_models.RuntimeOptions()img_info = {}try:# 复制代码运行请自行打印 API 的返回值resp = client.recognize_general_structure_with_options(recognize_general_structure_request, runtime)# print(resp.body.data)for i in resp.body.data.sub_images:img_info = i.kv_info.databreakexcept Exception as error:# 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。# 错误 messageprint(error)# 诊断地址print(error)UtilClient.assert_as_string(error)#更改keynew_info = {'creditCode':img_info['统一社会信用代码'],'legalPerson':img_info['法定代表人'],'companyName': img_info['名称类型'],'companyType':img_info['公司类型'],'businessAddress':img_info['住所'],'RegistrationDate':img_info['成立日期'],'registeredCapital':img_info['注册资本'],}print("输出结果:",new_info)return new_infoif __name__ == '__main__':obj_ = aliyunOcrImgPiao()obj_.main(img_link='https://xxx.com/123.png')

版权声明

本文章版权归作者所有,未经作者允许禁止任何转载、采集,作者保留一切追究的权利。

http://www.lryc.cn/news/536538.html

相关文章:

  • 【Apache Paimon】-- 作为一名小白,如何系统地学习 Apache paimon?
  • Elasticvue使用总结
  • 尚硅谷爬虫note002
  • 小白零基础如何搭建CNN
  • 在vivado中对数据进行延时,时序对齐问题上的理清
  • 《只狼》运行时提示“mfc140u.dll文件缺失”是什么原因?要怎么解决?
  • vue学习笔记7
  • Unity 增量打包AssetBundle
  • 嵌入式八股文面试题(二)C语言算法
  • 尚硅谷爬虫note005
  • xml 和json互转工具
  • ElementUI 抽屉组件高度封装
  • 深入解析:如何在C#和C/C++之间安全高效地通过P/Invoke传递多维数组
  • 轻量级在线ETL数据集成工具架构设计与技术实现深度剖析
  • 二、k8s项目的生命周期
  • GPT 系列模型发展史:从 GPT 到 ChatGPT 的演进与技术细节
  • C#语言的云计算
  • 金仓数据库-KingbaseES-学习-01-单机部署(非图形化安装)
  • 海外服务器都有什么作用?
  • git bash在github的库中上传或更新本地文件
  • vue2中 computed 计算属性
  • 自定义基座实时采集uniapp日志
  • 基于YALMIP和cplex工具箱的微电网最优调度算法matlab仿真
  • Effective Objective-C 2.0 读书笔记——内存管理(上)
  • 蓝桥杯-洛谷刷题-day5(C++)(为未完成)
  • conda 修复 libstdc++.so.6: version `GLIBCXX_3.4.30‘ not found 简便方法
  • 数据结构之队列,哈希表
  • 讯方·智汇云校华为授权培训机构的介绍
  • 【16届蓝桥杯寒假刷题营】第1期DAY4
  • 【Linux】cron计划任务定时执行命令