初窥强大,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.mzph.cn/pingmian/69729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不小心删除服务[null]后,git bash出现错误

不小心删除服务[null]后,git bash出现错误,如何解决? 错误描述:打开 git bash、msys2都会出现错误「bash: /dev/null: No such device or address」 问题定位: 1.使用搜索引擎搜索「bash: /dev/null: No such device o…

zsh: command not found: conda

场景描述 在 Linux 服务器上使用 zsh 时,如果出现 zsh: command not found: conda 错误,说明你的系统未正确配置 conda 命令,或者你尚未安装 Anaconda/Miniconda。 解决方案 确保已安装 Anaconda 或 Miniconda conda 是 Anaconda 或 Minico…

github不翻墙就可以访问

目录 简介资料准备windows平台设置下载运行git设置firefox设置 ubuntu平台设置下载启动服务设置系统代理git设置firefox设置证书 注意事项 简介 由于github访问不稳定,严重影响了国内软件开发,在网上搜索并验证了一些方法.现在整理出来一个可以正常使用的方法, 在windows和Lin…

k8s部署logstash

1. 编写logstash.yaml配置文件 --- apiVersion: v1 kind: Service metadata:name: logstash spec:type: ClusterIPclusterIP: Noneports:- name: logstash-tcpport: 5000targetPort: 5000- name: logstash-beatsport: 5044targetPort: 5044- name: logstash-apiport: 9600targ…

【JVM详解一】类加载过程与内存区域划分

一、简介 1.1 概述 JVM是Java Virtual Machine(Java虚拟机)的缩写,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成。JVM屏蔽了与操作系统平台相关…

25考研电子信息复试面试常见核心问题真题汇总,电子信息考研复试没有项目怎么办?电子信息考研复试到底该如何准备?

你是不是在为电子信息考研复试焦虑?害怕被老师问到刁钻问题、担心专业面答不上来?别慌!作为复试面试92分逆袭上岸的学姐,今天手把手教你拆解电子信息类复试通关密码!看完这篇,让你面试现场直接开大&#xf…

SOA(面向服务架构)全面解析

1. 引言 什么是SOA(面向服务架构) SOA(Service-Oriented Architecture,面向服务架构)是一种将应用程序功能以“服务”的形式进行模块化设计的架构风格。这些服务是独立的功能模块,它们通过定义明确的接口…

【leetcode 32】1047. 删除字符串中的所有相邻重复项

Java中的queue、deque、ArrayDeque的区别 使用 Deque 作为堆栈(ArrayDeque是双端队列,当仅使用栈操作时push/pop,就是栈) class Solution {public String removeDuplicates(String s) {//使用 Deque 作为堆栈(ArrayDeque是双端队列,当仅使用栈…

C# COM 组件在.NET 平台上的编程介绍

.NET学习资料 .NET学习资料 .NET学习资料 一、COM 组件简介 COM(Component Object Model)即组件对象模型,是一种微软提出的软件组件技术,它允许不同的软件模块在二进制层面进行交互。COM 组件可以用多种编程语言开发&#xff0…

【鸿蒙HarmonyOS Next实战开发】mp4parser库-音视频裁剪、合成、取帧等操作

mp4parser 简介 一个读取、写入操作音视频文件编辑的工具。 下载安装 ohpm install ohos/mp4parserOpenHarmony ohpm 环境配置等更多内容,请参考如何安装 OpenHarmony ohpm 包 使用说明 视频合成 import {MP4Parser} from "ohos/mp4parser";import {I…

Maven 中常用的 scope 类型及其解析

在 Maven 中,scope 属性用于指定依赖项的可见性及其在构建生命周期中的用途。不同的 scope 类型能够影响依赖项的编译和运行阶段。以下是 Maven 中常用的 scope 类型及其解析: compile(默认值): 这是默认的作用域。如果…

redis项目

短信登录 这一块我们会使用redis共享session来实现 商户查询缓存 通过本章节,我们会理解缓存击穿,缓存穿透,缓存雪崩等问题,让小伙伴的对于这些概念的理解不仅仅是停留在概念上,更是能在代码中看到对应的内容 优惠…

瑞友天翼应用虚拟化系统 GetPwdPolicy SQL注入漏洞复现

免责声明 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在使…

android设置添加设备QR码信息

摘要:客户衍生需求,通过扫QR码快速获取设备基础信息,并且基于POS SDK进行打印。 1. 定位至device info的xml添加相关perference Index: vendor/mediatek/proprietary/packages/apps/MtkSettings/res/xml/my_device_info.xml--- vendor/medi…

Ubuntu 多版本 gcc 配置常用命令备忘

用的频率不高,总忘记具体参数 1,安装多版本 gcc 以 gcc-11 和12 为例: sudo apt-get install gcc-11 gcc-12 sudo apt-get install gcc-11 gcc-12 2,配置多版本 gcc gcc 与 g 一起配置进数据库中: sudo update-a…

【kubernetes组件合集】深入解析Kubernetes组件之三:client-go

深入解析Kubernetes组件之三:client-go 目录 深入解析Kubernetes组件之三:client-go 引言 1. client-go简介 2. client-go的功能 2.1 资源操作 2.2 资源监听 2.3 认证和授权 2.4 错误处理和重试 2.5 扩展性和定制化 3. 使用client-go与Kubern…

数据结构——【二叉树模版】

#思路 1、二叉树不同于数的构建,在树节点类中,有数据,左子结点,右子节点三个属性,在树类的构造函数中,添加了变量maxNodes,用于后续列表索引的判断 2.GetTreeNode()函数是常用方法,…

【ubuntu下验证下菜品识别,训练,部署,验证 CNN + TensorFlow / PyTorch】

下来我会详细介绍如何在 Ubuntu 上运行你训练和部署的 菜品识别模型,确保每一步都能理解并能在你的系统中运行。 环境准备 1.1 安装必要的软件 在 Ubuntu 上,首先需要安装 Python 和相关的依赖库:更新系统: 打开终端,运行以下命令: bash sudo apt update && su…

多项式插值(数值计算方法)Matlab实现

多项式插值(数值计算方法)Matlab实现 一. 原理介绍二. 程序设计1. 构建矩阵2. 求解矩阵方程3. 作出多项式函数4. 绘制插值曲线5. 完整代码 三. 图例 一. 原理介绍 关于插值的定义及基本原理可以参照如下索引 插值原理(数值计算方法&#xff…

【Python深入浅出㉙】Python3邂逅MySQL:开启数据交互之旅

目录 一、Python 与 MySQL 的 “牵手” 前奏二、准备工作:搭建 “舞台”三、建立连接:开启沟通桥梁(一)pymysql 连接示例(二)mysql-connector 连接示例 四、基本操作:数据库的 “增删改查”&…