初窥强大,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.rhkb.cn/news/13837.html

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

相关文章

如何在Docker中运行MySQL容器?

随着容器化技术的普及,Docker已成为开发和部署应用的首选工具之一。MySQL作为最流行的开源关系型数据库,也非常适合在Docker容器中运行。本文将介绍如何在Docker中运行MySQL容器,帮助你快速搭建一个可用的数据库环境。 1. 安装Docker 首先&a…

[ESP32:Vscode+PlatformIO]添加第三方库 开源库 与Arduino导入第三方库的区别

前言 PlatformIO与Arduino在添加第三方库方面的原理存在显著差异 在PlatformIO中,第三方库的使用是基于项目(工程)的。具体而言,只有当你为一个特定的项目添加了某个第三方库后,该项目才能使用该库。这些第三方库的文…

高端入门:Ollama 本地高效部署DeepSeek模型深度搜索解决方案

目录 一、Ollama 介绍 二、Ollama下载 2.1 官网下载 2.2 GitHub下载 三、模型库 四、Ollmal 使用 4.1 模型运行(下载) 4.2 模型提问 五、Ollama 常用命令 相关推荐 一、Ollama 介绍 Ollama是一个专为在本地机器上便捷部署和运行大型语言模型&…

【DeepSeek论文精读】2. DeepSeek LLM:以长期主义扩展开源语言模型

欢迎关注[【youcans的AGI学习笔记】](https://blog.csdn.net/youcans/category_12244543.html)原创作品 【DeepSeek论文精读】1. 从 DeepSeek LLM 到 DeepSeek R1 【DeepSeek论文精读】2. DeepSeek LLM:以长期主义扩展开源语言模型 【DeepSeek论文精读】…

力扣.623. 在二叉树中增加一行(链式结构的插入操作)

Problem: 623. 在二叉树中增加一行 文章目录 题目描述思路复杂度Code 题目描述 思路 1.首先要说明,对于数据结构无非两大类结构:顺序结构、链式结构,而二叉树实质上就可以等效看作为一个二叉链表,而对于链表插入一个节点的操作是应…

深度学习01 神经网络

深度学习是机器学习领域中的一个新的研究方向。所以在学习深度学习之前我们需要了解一下神经网络。 神经网络 神经网络:是由大量的节点(或称“神经元”)和之间相互的联接构成。 每个节点代表一种特定的输出函数,称为激励函数、激活函数&…

基于JUnit4和JUnit5配合例子讲解JUnit的两种运行方式

1 引言 最近读的书有老有新,在读的过程中都完全完成了相应例子的构建和运行。在读《Spring in Action》1第4版时,其第37页的例子(以下称例子1)基于JUnit 4,并需要spring-test.jar;而在读《JUnit in Action…

【提示词工程】探索大语言模型的参数设置:优化提示词交互的技巧

在与大语言模型(Large Language Model, LLM)进行交互时,提示词的设计和参数设置直接影响生成内容的质量和效果。无论是通过 API 调用还是直接使用模型,掌握模型的参数配置方法都至关重要。本文将为您详细解析常见的参数设置及其应用场景,帮助您更高效地利用大语言模型。 …

使用Python创建、读取和修改Word文档

自动化文档处理是提升工作效率的关键路径之一,而Python凭借其简洁语法和丰富的生态工具链,是实现文档自动化处理的理想工具。通过编程手段批量生成结构规范的合同模板、动态注入数据分析结果生成可视化报告,或是快速提取海量文档中的关键信息…

Android Studio 2024.2.2.13版本安装配置详细教程

Android Studio 是由 Google 官方开发和维护的集成开发环境(IDE),专为 Android 应用开发设计。它是基于 JetBrains 的 IntelliJ IDEA 平台构建的,集成了丰富的工具和功能,帮助开发者高效构建、调试、测试和发布 Androi…

Qt实现简易音乐播放器

使用Qt6实现简易音乐播放器,效果如下: github: Gabriel-gxb/MusicPlayer: qt6实现简易音乐播放器 一、整体架构 基于Qt框架构建 整个音乐播放器程序以Qt框架为基础进行开发。Qt提供了丰富的类库和工具,方便开发者构建图形用户界…

GPT-4使用次数有上限吗?一文了解使用规则

GPT-4的推出,让越来越多的用户开始体验其卓越的功能。无论是用于日常需求还是专业内容制作,GPT-4的应用范围广泛,获得了用户的广泛赞誉。但是,在具体使用过程中,不少用户发现自己似乎触碰到了GPT-4的使用上限&#xff…

水波效果

水波效果指在计算机图形学中模拟水面波纹的视觉效果,通常用于游戏、动画或者其他虚拟场景中。主要用于体现水体的动态感,比如水的波动、反射、折射、透明等,可以让人感觉像真实的水一样流动闪耀。 核心特点就是: 动态波纹光学特…

Redis | 十大数据类型

文章目录 十大数据类型概述key操作命令数据类型命令及落地运用redis字符串(String)redis列表(List)redis哈希表(Hash)redis集合(Set)redis有序集合(ZSet / SortedSet&…

Linux之安装docker

一、检查版本和内核是否合格 Docker支持64位版本的CentOS 7和CentOS 8及更高版本,它要求Linux内核版本不低于3.10。 检查版本 cat /etc/redhat-release检查内核 uname -r二、Docker的安装 1、自动安装 Docker官方和国内daocloud都提供了一键安装的脚本&#x…

【WebLogic】Oracle发布WebLogic 14c最新版本-14.1.2.0

根据Oracle官方产品经理的博客,Oracle于2024年12月20日正式对外发布了WebLogic 14c的第二个正式版本,版本号为 14.1.2.0.0 ,目前官方已开放客户端下载。该版本除继续支持 Jakarta EE 8 版本外,还增加了对 Java SE 17(J…

feign 远程调用详解

在平常的开发工作中,我们经常需要跟其他系统交互,比如调用用户系统的用户信息接口、调用支付系统的支付接口等。那么,我们应该通过什么方式进行系统之间的交互呢?今天,简单来总结下 feign 的用法。 1:引入依…

解决 npm : 无法加载文件 D:\nodeJS\node_global\npm.ps1,因为在此系统上禁止运行脚本。

问题 在我将nodeJS从18更新到22之后,我发现在黑窗口运行npm run dev,可以成功启动项目,但是在Cursor的终端中却报如下错误: PS D:\DESKTOP\项目\vue-ems-admain> npm run dev npm : 无法加载文件 D:\Users\Download\nodeJS\no…

快速对QWen2.5大模型进行微调

先看看训练结果: 目录 前言什么是LLaMA-Factory?安装LLaMA-Factory准备数据集配置微调参数运行微调脚本评估和保存模型使用微调后的模型可视化微调大模型总结 前言 在当今人工智能领域,大模型(如LLaMA、GPT等)的微调…

深入理解linux中的文件(下)

目录 一、语言级缓冲区和内核级缓冲区 二、C语音中的FILE* fp fopen(“./file.txt”,"w"): 四、理解磁盘结构: 物理结构 逻辑结构 五、未被打开的文件: 六、更加深入理解inode编号怎么找到文件: 七、对路径结构进行…