首页 > 其他分享 >AI大模型实现图片OCR识别

AI大模型实现图片OCR识别

时间:2024-11-19 14:42:53浏览次数:3  
标签:识别 模型 AI image LLM OCR response

背景

     OCR(Optical Character Recognition,光学字符识别)是一种将图像中的文字转换为机器编码文本的技术。这项技术可以自动读取纸质文档上的文字信息,并将其转换成电子格式,便于编辑、存储和检索。OCR 技术在很多领域都有广泛应用,比如数据录入、文献数字化、辅助阅读设备等。

LLM 助力 OCR 的方式

  1. 文本理解和后处理:
  • 语义理解:LLM 可以帮助 OCR 系统理解识别出的文本内容,从而对错误或模糊的地方进行校正。例如,如果 OCR 系统误读了某个单词,LLM 可以根据上下文来推测正确的单词。
  • 格式修复:对于结构复杂的文档,如包含表格、列表等,LLM 能够帮助恢复原始文档的格式,使输出结果更加符合原始文档的结构。
  1. 多模态信息融合:
  • 结合图像识别和自然语言处理能力,LLM 可以处理包含文本和图像的混合内容,实现更高级别的信息提取和理解。
  1. 特定领域优化:
  • 在特定领域(如法律、医学等),LLM 可以通过预训练和微调来优化对专业术语的理解和识别,提高特定领域的 OCR 准确性。

LLM 进行图像识别与传统 OCR 对比时的主要缺点

LLM 的缺点

  1. 高计算资源需求:
  • 训练成本:训练大型语言模型需要大量的计算资源,包括高性能 GPU 和大规模的数据集。这导致训练成本非常高昂。
  • 推理成本:即使在模型训练完成后,进行实时推理也需要较高的计算资源,这对于资源有限的设备(如嵌入式系统)来说是一个挑战。
  1. 数据隐私和安全问题:
  • 数据收集:训练 LLM 需要大量的数据,这些数据可能包含敏感信息。收集和使用这些数据需要严格遵守数据隐私和安全法规,增加了合规成本。
  • 数据泄露风险:在传输和存储过程中,数据有泄露的风险,特别是在云环境中。
  1. 模型复杂性和可解释性差:
  • 黑盒性质:大型语言模型通常被视为“黑盒”,内部机制难以理解,这在某些需要高度透明和可解释性的应用场景中可能是一个问题。
  • 调试困难:由于模型复杂,调试和优化变得更加困难,尤其是在遇到特定问题时。
  1. 训练时间和成本:
  • 长时间训练:训练 LLM 需要大量的时间和计算资源,这在快速迭代和开发周期短的项目中可能是一个瓶颈。
  • 持续优化:模型需要定期进行微调和优化,以适应新的数据和应用场景,这增加了维护成本。
  1. 泛化能力的局限性:
  • 特定领域适应:尽管 LLM 具有较强的泛化能力,但在特定领域(如医学、法律等)的性能可能不如专门为这些领域设计的传统 OCR 系统。
  • 长尾问题:对于一些罕见或特殊的字符和布局,LLM 可能表现不佳,因为这些情况在训练数据中出现的频率较低。
  1. 实时性和延迟:
  • 响应时间:由于 LLM 的复杂性,实时处理图像和文本的响应时间可能较长,这对于需要快速反馈的应用(如实时翻译、即时通讯等)可能是一个问题。
  1. 模型大小和存储:
  • 大模型占用空间:大型语言模型通常体积庞大,占用较多的存储空间,这在存储资源有限的设备上可能是一个问题。

与传统 OCR 的对比

  1. 技术成熟度:
  • 传统 OCR:已经发展了几十年,技术相对成熟,有许多现成的商业产品和服务,易于集成和使用。
  • LLM:虽然近年来取得了显著进展,但仍处于快速发展阶段,技术和工具仍在不断完善中。
  1. 成本效益:
  • 传统 OCR:成本相对较低,适合预算有限的小型企业和个人开发者。
  • LLM:初始投资和长期维护成本较高,更适合大型企业和有较高预算的项目。
  1. 应用场景:
  • 传统 OCR:适用于标准化和结构化的文档处理,如发票、表格等。
  • LLM:适用于复杂和非结构化的文档处理,如手写笔记、多语言文档等。

识别图型验证码

今天我们来看的场景是 图型验证码识别,使用公网大模型API起成本高效识别图型验证码

提示词

请对这张图片进行OCR识别,并输出最准确的验证码,直接输出识别出的结果字符,不要输出其他内容。


文心一言3.5

识别成功

通义千问2.5

识别成功

通义千问2-VL-开源版-7B

图片理解qwen2-vl-7b

识别成功

关于7B模型

一般来说,7B参数量的模型在推理时可能需要至少8GB到16GB的GPU显存,但这只是一个粗略的估计。为了更准确地评估所需GPU显存,建议参考该模型官方提供的文档或测试环境中的具体要求。如果是在本地运行,还应该考虑是否进行了任何优化措施,比如混合精度训练(使用FP16而非FP32),这可以有效减少所需的显存量。如果您打算进行模型训练而不是简单的推理,那么可能还需要更多的显存来存储梯度信息和其他训练过程中产生的数据。

KIMI

识别成功

Gemini 1.5 Flash

做 OCR 效果非常好,可以在 Prompt 里面定制要输出的格式,并且成本极低。 案例有宝玉反馈其朋友某公司使用第三方的OCR的服务,用来提取发票上的文字为结构化数据。但收费较高.
参考提示词: *** Extract text from the provided image and organize it into a structured JSON format. ***

Google 每天为开发者免费提供15亿个Token,其中 Gemini 1.5 Flash免费套餐包含: - 每分钟15次请求(RPM) - 每分钟100万个Token(TPM) - 每天1,500次Token(RPD) - 免费上下文缓存服务,每小时最多可存储100万个Token - 免费微调 Gemini 1.5 Pro免费套餐包含: - 每分钟2次请求(RPM) - 每分钟32,000个Token(TPM) - 每天50次请求(RPD) 微调模型 text-embedding-004 提供: - 每分钟1,500次请求(RPM) 除了前面说的 API,Google AI Studio 还为开发者提供免费访问,其中 Gemini 1.5 Pro 有 2M Token上下文窗口。 价格页面:https://ai.google.dev/pricing Google AI Studio:https://aistudio.google.com

发票识别示例场景

代码实现

使用代码实现调用大模型API

import os
import json
import base64
import requests
from datetime import datetime

class AliBailianImageService:
     def __init__(self, configuration):
         self.configuration = configuration

    def get_api_key(self):
         # 根据环境变量决定从哪里读取 API Key
         dev_environment_variable = os.getenv("ENVIRONMENT")
         is_development = not dev_environment_variable or dev_environment_variable.lower() == "development"

        if is_development:
             # 开发环境从配置中读取
             api_key = self.configuration.get("DASHSCOPE_API_KEY")
         else:
             # 生产环境从环境变量读取
             api_key = os.getenv("DASHSCOPE_API_KEY")

        # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key = "sk-xxx"
         if not api_key:
             print("API Key 未设置。请确保环境变量 'DASHSCOPE_API_KEY' 已设置。")
             return None

        return api_key

    def get_image_base64_string_and_save(self, image_url):
         response = requests.get(image_url)
         if response.status_code != 200:
             raise Exception(f"Failed to download image: {response.status_code}")

        image_data = response.content
         encoded_image = base64.b64encode(image_data).decode('utf-8')

        # 可选步骤:保存图片到文件
         # filename = f"{uuid.uuid4()}.jpg"
         # with open(filename, 'wb') as f:
         #     f.write(image_data)

        return encoded_image

    def send_post_request(self, url, json_content, api_key):
         headers = {
             "Authorization": f"Bearer {api_key}",
             "Content-Type": "application/json",
             "Accept": "application/json"
         }

        response = requests.post(url, data=json_content, headers=headers)
         response_body = response.text

        self.write_response_to_log(response_body)

        if response.status_code >= 200 and response.status_code < 300:
             return response_body
         else:
             return f"请求失败: {response.status_code}"

    def write_response_to_log(self, response_body):
         log_file_path = "Logs/response.log"
         log_dir = os.path.dirname(log_file_path)

        if not os.path.exists(log_dir):
             os.makedirs(log_dir)

        with open(log_file_path, 'a') as f:
             f.write(f"[{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}] Response Body: {response_body}\n")

    def get_results(self):
         api_key = self.get_api_key()
         if not api_key:
             return None

        encoded_image = self.get_image_base64_string_and_save(
             "http://0.0.0.0/7661454/captchaimage?rnd=0.8717223995099175"
         )

        url = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions"
         json_content = {
             "model": "qwen2-vl-7b-instruct",
             "messages": [
                 {
                     "role": "user",
                     "content": [
                         {"type": "text", "text": "请对这张图片进行OCR识别,并输出最准确的验证码,直接输出识别出的结果字符,不要输出其他内容。"},
                         {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{encoded_image}"}}
                     ]
                 }
             ]
         }

        json_content_str = json.dumps(json_content)

        result = self.send_post_request(url, json_content_str, api_key)
         print(result)
         return result

if __name__ == "__main__":
     # 示例配置
     config = {
         "DASHSCOPE_API_KEY": "your-api-key-here"
     }

    service = AliBailianImageService(config)
     result = service.get_results()
     if result:
         print("Result:", result)

通义千问2-VL-开源版-2B

通义千问VL模型qwen2-vl-2b-instruct可以根据您传入的图片来进行回答,curl参考

curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \ -H "Authorization: Bearer $DASHSCOPE_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ "model": "qwen-vl-max", "input":{ "messages":[ { "role": "user", "content": [ {"image": "https://img.alicdn.com/imgextra/i2/O1CN01y1lotD1hINrPr60fs_!!6000000004254-0-tps-1384-3024.jpg"}, {"text": "这是什么?"} ] } ] } }'

事实情况下独立部署也可以

测试图片进行识别

返回示例

[2024-11-06 16:14:22] Response Body: {"choices":[{"message":{"content":"\"bafy\"","role":"assistant"},"finish_reason":"stop","index":0,"logprobs":null}],"object":"chat.completion","usage":{"prompt_tokens":60,"completion_tokens":6,"total_tokens":66},"created":1730880859,"system_fingerprint":null,"model":"qwen-vl-plus","id":"chatcmpl-5a306496-300c-9815-8c50-35e98f15508d"}

目前仅供免费体验,另一个官方示例是视觉语言模型输出示例

传统OCR工具提取的内容不完整且格式混乱。大模型不仅能精准提取图片中的文字,还能以规整的形式输出。

通义千问团队以Apache 2.0协议开源了Qwen2-VL-2B和Qwen2-VL-7B,开源代码已集成到Hugging Face Transformers、vLLM和其他第三方框架中。开发者可以通过Hugging Face和魔搭ModelScope下载使用模型,也可通过通义官网、通义APP的主对话页面使用模型。

图片理解

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

视觉理解

Qwen2-VL、Qwen-VL如何使用_大模型服务平台百炼(Model Studio)-阿里云帮助中心

阿里云百炼平台:

https://help.aliyun.com/zh/model-studio/developer-reference/qwen-vl-api

GitHub:

https://github.com/QwenLM/Qwen2-VL

HuggingFace:

https://huggingface.co/collections/Qwen/qwen2-vl-66cee7455501d7126940800d

魔搭ModelScope:

https://modelscope.cn/organization/qwen?tab=model

模型体验:

https://huggingface.co/spaces/Qwen/Qwen2-VL

https://qwen.readthedocs.io/en/latest/benchmark/speed_benchmark.html

总结

       我们基于互联网大模型API辅助实现图型验证码识别,如果配合工作流更是简单便捷,同时成本不高, 使得老一代信息系统中图型验证码已存在安全隐患。相比传统OCR识别,能够按要求完善识别后格式。

LLM(Large Language Models,大型语言模型)辅助OCR(Optical Character Recognition,光学字符识别)图片识别具有重要意义,主要体现在以下几个方面:

1、提高信息提取的准确性和效率

OCR技术的局限性:

  • OCR技术虽然能够从图像中提取文本信息,但在处理复杂场景时,如具有复杂背景、手写字体、低质量图像等情况,其识别准确性可能会受到影响。

LLM的辅助作用:

  • LLM可以对OCR提取的文本进行深入分析,理解其上下文含义,并提取出关键信息。这种分析能力使得LLM能够纠正OCR识别中的错误,提高信息提取的准确性。
  • LLM还可以根据用户的提问或需求,对提取的信息进行进一步的筛选和整理,从而提高信息提取的效率。
2、拓展OCR技术的应用场景

传统OCR的应用限制:

传统的OCR技术主要应用于文档扫描、车牌识别等相对简单的场景。

LLM赋能下的OCR应用:

在LLM的辅助下,OCR技术可以应用于更复杂的场景,如自然场景文本识别、手写字体识别等。

此外,LLM还可以结合OCR技术实现定制化的关键信息抽取,满足不同行业和领域的特定需求。

3、推动智能化发展

自动化办公:

  • 在办公场景中,LLM与OCR的结合可以实现对文档图片的自动识别、关键信息提取和整理,极大地提高了工作效率。例如,在财务报销流程中,可以自动从发票图片中提取关键信息并录入系统。

智能客服:

  • 在智能客服领域,用户可能会通过图片形式发送问题或需求。利用LLM与OCR技术,智能客服可以自动识别图片中的文字信息,并据此给出相应的回答或解决方案。

其他领域:

  • 在电商领域,LLM技术可以用于分析商品图片中的关键信息,如品牌、颜色、尺码等,以支持商品推荐和库存管理等决策。
  • 在医疗影像分析领域,可以使用OCR技术提取影像中的文字信息,再使用LLM理解影像描述的语义信息,从而实现对病情的自动诊断和分析。
4、技术融合与创新

技术融合:

  • LLM与OCR的结合是技术融合的一个典型例子。这种融合不仅提高了信息提取的准确性和效率,还拓展了OCR技术的应用场景。

技术创新:

  • 随着LLM技术的不断发展,其在OCR领域的应用也将不断创新。例如,通过引入更先进的深度学习算法和模型结构,可以进一步提高LLM对OCR提取文本的理解和分析能力。
  •   最后关注灵活就业新动态,了解更多行业资讯、前沿技术请关注公众号:贤才宝
  • 贤才宝https://www.51xcbw.com)

标签:识别,模型,AI,image,LLM,OCR,response
From: https://blog.csdn.net/weixin_60669486/article/details/143885133

相关文章

  • 皮带跑偏识别智慧矿山一体机人员乘坐皮带识别提升矿山效率的智能化解决方案
    在矿业领域,随着科技的不断进步,智能化转型已成为提升矿山安全性、效率和可持续性的关键。智慧矿山一体机的问世,正是这一转型的体现,它专为矿山环境设计,集成了多种前沿技术,以实现矿山作业的智能化管理。本文将详细介绍皮带跑偏识别智慧矿山一体机如何通过其先进的功能和应用,为矿山行......
  • 如何使用WhoAmIMailBot隐藏你的电子邮箱地址
    关于WhoAmIMailBotWhoAmIMailBot是一款针对电子邮件服务的安全工具,该工具可以帮助广大研究人员通过自定义配置来隐藏自己的真实电子邮箱地址。该工具受到了Blur项目的启发,而该项目允许我们为自己的电子邮件创建一个别名,并用这个别名来实现应用程序的注册。但Blur项目的问题在......
  • CLIP图像识别算法详解
    CLIP图像识别算法详解目录引言CLIP算法概述2.1基于Transformer架构2.2多模态预训练模型2.3跨模态表示学习工作原理3.1维度嵌入:文本与图像编码3.2对比性学习3.3输入两个相关/不相关的文本和图片对3.4计算它们之间的相似度预训练阶段4.1使用大量数据......
  • 罐笼乘坐人员超限识别智慧矿山一体机斜井人员进出识别应用场景综述
    在矿山行业中,安全始终是最重要的议题之一。随着工业4.0和智能化技术的发展,智慧矿山一体机应运而生,它不仅是一款设备,更是一个全面的解决方案,旨在通过智能化手段提升矿山的安全监管水平。本文将详细介绍斜井人员进出识别智慧矿山一体机的功能特点、技术优势以及在不同矿山场景下的应......
  • AI智能分析视频分析网关越界检测提升加油站安全管理效率智能AI管理平台方案
    在能源行业,尤其是加油站这样的高风险环境中,安全监控的重要性不言而喻。随着人工智能技术的飞速发展,传统的视频监控系统正逐渐被智能化、自动化的解决方案所取代。本文将介绍一个创新的加油站智能AI管理平台,该平台通过集成最新的AI技术和智能分析算法,为加油站安全管理带来了革命性......
  • 劳保工服穿戴识别系统
    劳保工服穿戴识别系统通过部署在工作现场的监控摄像头,劳保工服穿戴识别系统24小时不间断地对工作场景进行实时监测。一旦检测到员工的工服穿戴不符合规定,系统能够立即发出警报,提醒相关人员进行处理。这种及时报警功能大大提高了安全管理的响应速度。劳保工服识别算法主要应用于电......
  • Ollama、轻量级AI 模型,Windows本地部署
    Windows下载部署Ollama什么是OllamaOllama是一个轻量级的本地推理工具,主要用于运行AI模型。它允许用户在本地设备上运行和交互基于大语言模型(LLM)的应用,而无需依赖云服务。这种工具的主要优势是隐私保护和低延迟,尤其适合那些需要处理敏感数据或希望脱离互联网的场景。......
  • 校园防欺凌AI语音识别自动报警系统
    校园防欺凌AI语音识别自动报警系统通过部署在校园各处的语音识别终端,校园防欺凌AI语音识别自动报警系统24小时不间断地监测校园内的声音数据,利用先进的语音识别技术,对声音进行分析和处理。系统内置的关键词库包含了与欺凌行为相关的求救词汇和敏感词汇,如“救命”、“老师有人打我......
  • 睡岗检测视频分析网关摄像机实时接入分析平台值班室离岗识别监测方案
    在现代安全管理中,值班室的监控和人员管理是保障企业运营安全的关键环节。然而,值班人员的离岗或睡岗现象时有发生,这不仅影响了工作效率,更可能带来严重的安全隐患。本文将探讨如何通过值班室离岗识别监测方案,利用摄像机实时接入分析平台视频分析网关,实现对值班人员行为的实时监控和......
  • 校园防欺凌预警系统 学生打架智能识别系统
    校园防欺凌预警系统学生打架智能识别系统在校园的卫生间、宿舍等容易发生欺凌行为的场所,安装AI语音防欺凌报警系统是十分必要的。校园防欺凌预警系统学生打架智能识别系统能够实时监听周围的声音,一旦检测到异常求救关键词,系统会立即启动报警程序。系统会立刻将警情传送到校园保......