AI大模型实现OCR识别验证码

百度AI识别验证码 百度AI识别验证码 这次我们要使用百度AI来识别验证码,在一定额度内是不需要钱的 创建应用 https://console.bce.baidu.com/ai/?_=1646966441317&fromai=1#/ai/ocr/app/list 文字识别默认是选上的 SDK https://cloud.baidu.com/doc/OCR/s/9kibizye4 安装 pip install baidu-aip 使用 from aip import AipOcr """ 你的 APPID 阅读详情
AI摘要

本文介绍了LLM技术在自然语言处理领域的广泛应用,如文本分类、机器翻译等。还提及AIGC技术应用案例,对比了LLM进行图像识别与传统OCR的优缺点。基于互联网大模型API辅助实现图型验证码识别,LLM辅助OCR图片识别可提高信息提取准确性和效率、拓展应用场景等。最后分享了AI大模型学习资料。

LLM(Large Language Model)技术是一种基于深度学习的自然语言处理技术,旨在训练能够处理和生成自然语言文本的大型模型。

  1. LLM 技术的核心思想是使用深度神经网络,通过大规模的文本数据预训练模型,并利用这些预训练模型进行下游任务的微调或直接应用。
  2. LLM 技术的主要特点是可以从大规模文本数据中学习到丰富的语言知识和语言模式,使得模型能够对自然语言的语义、语法等进行理解和生成,具备更强的语言处理能 LLM 技术在自然语言处理领域具有广泛的应用前景。以下是一些应用前景的示例:
  • 语言理解和生成:LLM 技术可以应用于文本分类、命名实体识别、关系抽取、情感分析等任务,对自然语言进行语义理解和信息提取。

  • 机器翻译:LLM 技术可以应用于机器翻译任务,训练模型能够自动将一种语言翻译成另一种语言。

  • 问答系统:LLM 技术可以用于构建智能问答系统,通过理解用户的问题并检索相关信息,给出准确的答案。

  • 对话生成:LLM 技术可以应用于对话系统,模拟人类对话,进行自然、流畅的交互。

  • 文本摘要和生成:LLM 技术可以用于自动摘要生成,将长文本压缩为简洁准确的摘要,也可以用于生成文章、新闻等文本内容。

img

1.LLM常见应用

  1. 文本到文本:摘要、翻译、问答 文本到文本应用程序通常属于自然语言处理 (NLP) 的范畴,采用 Transformer 模型或 BERT(Transformers 的双向编码器表示)等复杂算法。在文本摘要的背景下,Rouge Score 或 BLEU(双语评估研究)指标等技术可以评估生成的摘要的质量。对于企业来说,这对于自动总结冗长的报告、从而更快地做出决策来说非常宝贵。文本翻译服务通常采用在并行语料库上接受过培训的领域LLM,并使用 METEOR 等指标进行评估。这些服务对于全球运营的企业至关重要,可以实现跨越语言障碍的无缝沟通。问答平台通常依赖上下文感知算法来提供高度准确的答案。企业可以将领域LLM集成到支持系统中,以实现实时、有数据支持的响应。

  2. 语音转文本:转录服务、声控助手 语音转文本技术的关键在于自动语音识别 (ASR) 系统。ASR 系统采用隐马尔可夫模型或深度神经网络来转录口语单词。企业可以利用 ASR 系统在电话会议期间提供自动实时转录服务,创建易于搜索和存档的文本记录。声控助手采用 ASR 和 NLP 来执行命令。这里的商业应用范围从促进仓库中的免提操作到零售业中复杂的客户交互系统。

3.图像转文本:图像字幕、OCR(光学字符识别) 图像到文本结合使用卷积神经网络 (CNN) 进行特征提取,并结合循环神经网络 (RNN) 或 Transformer 生成相应的文本。OCR 技术专门采用二值化等图像预处理技术,并采用 k-NN 或 SVM 等机器学习分类器。对于企业来说,领域LLM可以转化为搜索引擎优化视觉内容的自动标记、发票的自动分类等等。

  1. 代码生成:自动生成代码片段,修复Bug 在编码数据库上训练的复杂语言模型可以预测可能的代码片段,从而加快软件开发周期。领域LLM通常采用抽象语法树或控制流图来提高准确性。在错误修复中,集成静态代码分析工具来识别漏洞,机器学习模型建议适当的修复。这提高了业务应用程序的效率和稳健性。
  2. 聊天机器人:客户支持、交互式常见问题解答 业务环境中的聊天机器人通常使用决策树、有状态 LSTM 网络甚至更高级的架构(例如 GPT(生成式预训练变压器))构建。这些聊天机器人通常接受企业历史客户服务交互的培训,这使它们能够更切合实际地解决问题。除了客户支持之外,他们还可以执行从潜在客户开发到自动追加销售的各种角色,从而显着降低人力成本。
  3. 情绪分析:通过评论或社交媒体确定客户情绪 情感分析通常采用自然语言理解 (NLU)(NLP 的一个子领域)来识别表明情感的语言中的细微差别。通常使用 TextBlob、VADER(Valence Aware Dictionary 和 sEtiment Reasoner)以及更先进的神经网络模型。企业可以将情绪分析集成到 CRM 系统中,从而实现实时客户情绪跟踪和更有针对性的客户互动。
  4. 数据清理:识别并纠正错误的数据条目 数据清理过程通常采用无监督学习算法(例如 k 均值聚类或分层聚类)来识别错误或异常数据点。此外,可以配置决策树或基于规则的系统来识别结构化数据中的不一致之处。对于企业而言,数据清洗可确保分析的可靠性,这对于战略规划和运营效率至关重要。
  5. 异常检测:识别数据集中的异常值或异常值 对于异常检测,通常使用 Z 分数等统计技术或隔离森林等机器学习算法。时间序列数据可能会使用长短期记忆网络 (LSTM) 来检测随时间变化的异常情况。企业可以在欺诈检测、制造质量控制或市场趋势预测等各个领域使用异常检测,从而预先识别和减轻风险。

通过了解这些各种领域LLM功能的技术基础和业务应用,企业可以就如何将领域LLM整合到其运营中以产生最大影响做出更明智的决策。

1.0 ChatIE:通过多轮问答问题实现实命名实体识别和关系事件的零样本信息抽取

零样本信息抽取(Information Extraction,IE)旨在从无标注文本中建立IE系统,因为很少涉及人为干预,该问题非常具有挑战性。但零样本IE不再需要标注数据时耗费的时间和人力,因此十分重要。近来的大规模语言模型(例如GPT-3,Chat GPT)在零样本设置下取得了很好的表现,这启发我们探索基于提示的方法来解决零样本IE任务。我们提出一个问题:不经过训练来实现零样本信息抽取是否可行?我们将零样本IE任务转变为一个两阶段框架的多轮问答问题(Chat IE),并在三个IE任务中广泛评估了该框架:实体关系三元组抽取、命名实体识别和事件抽取。在两个语言的6个数据集上的实验结果表明,Chat IE取得了非常好的效果,甚至在几个数据集上(例如NYT11-HRL)上超过了全监督模型的表现。我们的工作能够为有限资源下IE系统的建立奠定基础。

img

img

img

1.1RAG检索增强生成----LangChain

LangChain的目的是为了开发应用,通过模块组合的方式使用LLM,并与其他模块组合的方式来创造应用。可以理解为Langchain本身并不提供LLM模型,只是对LLM抽象,把LLM当作一个功能模块使用。LangChain能够连接LLM的能力与目前已有的其他能力,创造能力更强大的应用。

img

img

img

实现原理如图所示,过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的top k个 -> 匹配出的文本作为上下文和问题一起添加到prompt中 -> 提交给LLM生成回答。 可以看到,核心是将本地答案数据集转为向量存储到向量数据,当用户输入查询的问题时,把问题转为向量然后从向量数据库中查询相近的答案topK 这个时候其实就是我们最普遍的问答查询方案,在没有大模型的时候就直接返回相关的答案整个流程就结束了。现在有大模型了可以优化回答内容的整体结构。 核心一:文本切割 核心二:embedding及向量化存储 核心点三:LLM总结 通过embedding向量化文本后可根据需要召回TopK的chunk文档,并按照类似如下的prompt template灌给大模型进行总结。

"""
 		已知信息:{context} 
		根据上述已知信息,简洁和专业的来回答用户的问题。如果无法从中得到答案,请说 “根据已知信息无法回答该问题” 或 “没有提供足够的相关信息”,不允许在答案中添加编造成分,答案请使用中文。 
  	问题是:{question}
  """

1.2 AIGC技术应用

AIGC(Artificial Intelligence Generated Content,人工智能生成内容)是一种利用人工智能技术生成各种形式内容的方法。这些内容包括文本、图像、音频、视频等。

AIGC技术的应用范围非常广泛,包括但不限于以下几个方面:

文本生成:使用自然语言处理技术,根据给定的输入,自动生成符合语法和语义规则的文章、故事、广告语等。 图像生成:利用计算机视觉技术,根据给定的输入,自动生成符合要求的图片、海报、漫画等。 音频生成:使用语音合成技术,根据给定的文字或语音输入,自动生成符合要求的音频文件,如语音助手、语音导航等。 视频生成:利用计算机视觉和语音识别技术,根据给定的输入,自动生成符合要求的视频文件,如智能监控、智能安防等。 AIGC技术的应用不仅可以提高内容生成的效率和质量,还可以降低内容制作的成本和风险。例如,在媒体和广告行业,AIGC技术可以快速生成符合品牌调性和用户需求的文章、图片和视频,提高品牌曝光和用户粘性。在游戏行业,AIGC技术可以自动生成游戏场景、角色和道具等,提高游戏开发效率和质量。

img

  • 部分案例:

    • 腾讯“AI写稿”:在2018年雅加达亚运会期间,腾讯新闻写稿机器人以接近500篇/天的速度发布关于亚运会的赛事新闻,内容覆盖11个比赛大项。通过结合计算机视觉与自然语言处理技术,腾讯写稿机器人可以从网上抓取信息给图片打标签;然后基于标签通过算法挖掘出图片中的信息;再根据各种框架算出精彩指数并挑选图片;最后选择历史文章片段完成文本写作。整个流程耗时不超过5秒。
    • 阿里巴巴“AI设计”:阿里巴巴的“鹿班”是一款可以秒级自动生成大量Banner图的在线设计工具,2017年双11期间,鹿班累计设计4.4亿张Banner图,而人类设计师的极限是1000张。鹿班突出的一个功能是“智能排版”,用户只需要任意输入一段文字、上传一张图片即可,通过算法就能自动分析内容与背景的关系,实现元素间的最优布局。
    • 快手“AI合成主播”:2020年,快手推出“AI合成主播”,该主播可以24小时在线直播,只需输入文字即可生成内容。这种主播可以替代部分人工主播,降低直播成本,提高直播效率。
    • 微软小冰“AI写诗”:微软小冰通过深度学习和自然语言处理技术,可以自动生成符合格律和意境的诗歌。这些诗歌不仅可以用于文化娱乐,还可以用于教育和科研等领域。
    • 谷歌“AI作画”:谷歌推出了一种名为“DeepDream”的AI作画工具,可以根据给定的输入自动生成具有艺术风格的图像。这些图像可以用于艺术创作、广告设计和游戏开发等领域。

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

img

通义千问2.5

img

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

图片理解qwen2-vl-7b

img

关于7B模型

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

KIMI

img

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

发票识别示例场景

img

代码实现


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": "这是什么?"} ] } ] } }'

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

测试图片进行识别

img

返回示例

[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"}

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

img

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

img

img

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

图片理解

https://bailian.console.aliyun.com/#/model-market/detail/qwen2-vl-2b-instruct?tabKey=sdk

视觉理解

https://help.aliyun.com/zh/model-studio/user-guide/vision?spm=a2c4g.11186623.help-menu-2400256.d_1_0_2.5ef477e9sJEdx7&scm=20140722.H_2845871._.OR_help-V_1#f1cbd5b8a8k5w

阿里云百炼平台:

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提取文本的理解和分析能力。

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

总结

​ 我们基于互联网大模型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提取文本的理解和分析能力。

​

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

【ChatOCR】OCR+LLM定制化关键信息抽取(附开源大语言模型汇总整理) OCR文字识别与大语言模型的结合,智能抽取感兴趣的关键信息,无需复杂繁琐的OCR提取结果后处理规则,大大提升泛化性。 阅读详情

相关推荐

AI大模型实现图片OCR识别

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

m0_74823878的博客 1815

AI图像识别技术下,图片验证码基本无效

在互联网时代,图片验证码作为一种网络安全措施,被广泛用于区分人类用户和计算机程序。然而,随着人工智能技术的飞速发展,尤其是在图像识别领域,图片验证码的有效性正受到前所未有的挑战。

橙语AI的专栏 871

验证码AI识别准确率首次接近100%,结合AI agent实现自动化登陆,验证码识别全流程实战,20种大类验证码识别方案设计,包含实现源码

验证码AI识别准确率首次接近100%,结合AI agent实现自动化登陆,验证码识别全流程实战,20种大类验证码识别方案设计,包含实现源码。 很多网站服务会要求用户从一堆图片中选择特定物体,以此来验证用户是否真人。这种图片识别验证码(CAPTCHA)最常见的形式是在复杂的街景照片中识别自行车、斑马线、交通灯等日常物体。然而,最近有研究指出,一些本地运行的AI机器人使用特别训练的图像识别模型,已经做到100%的成功率,达到甚至超过了人类水平!

代码讲故事 1793

验证码识别全流程实战,突破史上最难AI验证码!

验证码大突破!本文将介绍验证码的历史与发展、验证码识别的历史与发展,验证码识别全流程实战,突破史上最难AI验证码!

TechLead 3924

二阶FLL辅助三阶PLL环路的代码解读

今天对GNSS接收机里面的载波跟踪环路代码进行了解读 以下是个人的一点见解 % 载波环第二步:环路滤波器 二阶FLL辅助三阶PLL环路 carrLoopS0 = lastCarrLoopS0 + (phaseErr*tau0PLL + freqErr*tau1FLL) * PDIcarr; carrLoopS1 = lastCarrLoopS1 + (tau1PLL*phaseErr + carrLoopS0 + tau2FLL*freqErr) * PD

LWN7321的博客 2629

基于Simulink的前馈解耦SVPWM整流器仿真

本文提出了一种基于Simulink的前馈解耦SVPWM整流器仿真方案,针对传统双闭环控制存在的耦合严重、电压利用率低等问题进行优化。通过前馈补偿dq轴耦合项(ωLiq和ωLid)结合SVPWM调制算法,实现了电流跟踪误差<3%、电压利用率达0.99、THD<3%的性能指标。文章详细阐述了系统架构设计,包括前馈解耦原理推导、SVPWM算法实现步骤,并提供了完整的Simulink建模方法。仿真结果表明,该方案在动态响应速度(25ms)和直流电压纹波(1.1%)方面显著优于传统SPWM控制。同时给出了

MHD0815的博客 162

AI 大模型时代:验证码如何用「通用识别」解决?

AI、大模型、验证码识别、爬虫、通用识别近年来 AI 与大模型能力快速提升,许多过去依赖专用 OCR 或小模型的场景,正在转向「理解图像 + 结构化输出」的一体化方案。日常遇到的验证码——无论是简单的英文字母与数字,还是滑块、点选、问答类交互——本质都是对「图像内容是什么、要点哪里」的判定;这正是视觉语言模型(VLM)等大模型擅长的方向。

Marvel__Dead 胡艺宝的博客 3480

c语言【分糖果】2023蓝桥杯4124(枚举,递归,dfs)

但是这是不符合我们糖果刚好分完的条件的,我们应该往回退到上一层,也就是孩子6这层,然后j+1=3,孩子7分到3个第二种糖果,这也不符合我们糖果刚好分完的条件,然后就会再次回退到孩子6这里,然后j+1=4,让我们的孩子7获得5块第二种糖果,然后还是不符合糖果刚分完的条件,于是再一次退回到孩子6这里,然后就会有外循环i+1=1,j=1,孩子7分到1块第一种糖果1块第二块糖果......然后就是这样的不停地回溯,试探,直到把整棵树遍历一遍,并且记录所有的满足条件的组合。先放一下我的代码,我的代码超时啦救命!

weixin_74331419的博客 730

影刀RPA AI图像识别自动化:验证码与商品图片智能处理

摘要(150字): 本文介绍利用AI图像识别技术解决RPA自动化中的图像处理难题。针对验证码识别、商品图片分类、重复图片去重等场景,作者对比了多种解决方案:打码平台处理验证码(如超级鹰)、通义千问VL分析图片内容、OpenCV感知哈希检测相似图片。文章提供具体代码实现,包括验证码自动识别接口封装、通义千问多模态API调用方法,以及基于OpenCV的图片去重算法。这些技术可帮助RPA流程突破图像障碍,实现登录验证、商品筛选、异常监控等自动化任务。不同方案的成本和适用场景也进行了对比分析。

RPA专家,自动化流程机器人,定制代写,指导教学。 1025

从病毒分析到安全研究:手把手教你用OD破解加壳程序的反调试机制

本文深入探讨了如何识别并绕过加壳程序的反调试机制,特别是针对使用IsDebuggerPresent等API检测的防护手段。通过实战案例和工具链配置,详细介绍了逆向工程中的关键技巧,包括内存补丁、硬件断点定位OEP等,帮助安全研究人员有效突破软件保护技术。

tgb345678的博客 823

SAP ABAP Append structure 介绍

所有在 append structure 上增强的字段都是 append structure 的一部分,这意味着对这些增强所做的任何更改仅仅施加在 append structure 上,而不会影响被增强的 ABAP DDIC 结构。这同样适用于 transport. 激活数据库表或结构时,会找到所有关联的 append structure,并将它们的组件附加到数据库表或结构。Append structure(附加结构)是 ABAP 字典中附加到另一个结构或数据库表并将其组件附加到它们的结构。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1165

AI破壁:当验证码的“人机防线”被深度学习瓦解

验证码与AI的博弈,是一场没有终局的战争。二十余年前,路易斯·冯·安设计了第一代验证码,用扭曲的字符筑起人机防线。二十余年后,深度学习以95%以上的准确率轻松跨越这道防线。防御者随即祭出行为分析、AIGC动态生成、对抗样本等新武器,而攻击者又在研究如何用多模态大模型、零样本学习来突破这些新防线。这场攻防战的本质,是人类在教机器“像人一样看”的同时,又在努力寻找机器“看得不像人”的破绽。这是一个自指的矛盾——我们越成功地让AI模仿人类,就越难区分人与AI。

zhaoqweasdzxc的博客 833

FPGA控制AD5754实现模数转换Verilog代码与测试激励

本文提供了使用FPGA控制AD5754芯片实现数字信号转模拟信号的Verilog代码和测试激励。AD5754芯片简介:AD5754是一款16位数字信号转模拟信号的芯片。通信方式:FPGA与AD5754之间通过SPI接口进行通信,SPI时钟clk的最大频率为30MHz。模拟输出:AD5754提供了四路模拟输出。工作方式:当前AD5754采用单极性工作方式。指令刷新:根据现有理解,同轴的速度和电流指令应同时刷新。利用LDAC引脚控制模拟信号的刷新,但需实际验证。CLR信号验证。

whm128的博客 245

Janus-Pro-7B Python爬虫进阶:反反爬策略解析

本文介绍了如何利用星图GPU平台自动化部署Janus-Pro-7B镜像,以构建智能Python爬虫。该多模态大模型能有效应对复杂的反爬机制,其核心应用场景之一是智能识别并破解网站验证码,从而提升数据采集的自动化程度与成功率。

weixin_30248619的博客 1433

零基础学GPU KMD--8. 内存管理:GPU 显存与系统内存的协同​8.1 显存分配策略:GEM / TTM 原理

支持 VRAM、GTT(Graphics Translation Table)、SYSTEM 内存的动态迁移与缓存管理。:若缓冲区在 SYSTEM,TTM 分配 GTT 条目并建立页表映射,使 GPU 可直接访问。:系统内存中预留给 GPU 直接访问的区域,通过 GPU 的 MMU 做地址翻译。你需要我继续展开这一部分吗?​ 为复杂离散 GPU 设计,应对大容量 VRAM、多内存域、显存迁移等问题。:重量级、功能全,适合大容量、多内存域的离散 GPU,强调显存迁移与统一管理。

amy_mhd的博客 185

YOLOv11改进 | Conv改进篇 | 含2种改进,引入DynamicConv替换普通Conv卷积下采样和C3k2_DynamicConv替换C3k2(来自CVPR2024)

本文提出了一种基于DynamicConv动态卷积优化的YOLOv11轻量化模型改进方案。通过引入多专家机制的动态卷积模块,在增加模型参数量的同时保持较低的计算复杂度(FLOPs),有效解决了低FLOPs模型在大规模预训练中的性能瓶颈问题。文章详细介绍了动态卷积的工作原理、核心代码实现,并提供了在YOLOv11中集成DynamicConv和C3k2_GhostModule_DynamicConv模块的完整教程,包括模块添加、配置文件修改和模型训练验证过程。实验结果表明,该方案在保持高效推理速度的同时显著提升了

Ai缝合怪、助力小伙伴高效发论文 537

AI自动发票查验存档:告别手工归集,财务备查更省心

财务报销高峰期,发票查验繁琐且结果难归档,常导致审计时追溯无据。借助OCR与大模型技术,可将发票图片中的关键信息自动提取并结构化,结合AI Agent自动化流程,实现查验结果自动归档至Excel台账,让备查记录可检索、可追溯。该方案不仅解决重复劳动,还通过状态分类与异常预警,降低财务合规风险。适用于出纳、会计、财务共享中心及数字化建设人员,无需复杂编程即可落地。本文从技术原理到实操细节,完整呈现一套低成本、高可靠性的发票查验存档方案。

weixin_32495691的博客 310

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

智能爬虫方案:OpenClaw+Qwen3.5-4B-Claude解析动态网页

本文介绍了如何在星图GPU平台上自动化部署Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF镜像,构建智能爬虫解决方案。该方案结合OpenClaw框架,可自动解析动态网页内容,适用于电商价格监控、数据聚合等场景,显著提升爬虫的适应性和效率。

weixin_42168902的博客 28

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

AI大模型如何实现图片OCR识别

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!😝有需要的小伙伴,可以保存图片到。

程序员鑫港的博客 3411

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

5分钟搞定:Java实现验证码智能识别_java_验证码识别

在Java开发领域,java 识别验证码的需求日益增长。为了应对这一挑战,利用大模型进行java 识别验证码已经成为一种趋势。这种方法不仅提高了识别的准确性和效率,还简化了开发流程。Spring AI作为一个专为Java开发者设计的强大AI应用框架,在java 识别验证码方面展现了其独特的优势。通过提供一个统一且易于使用的接口,Spring AI让开发者能够轻松地集成并切换不同的AI服务提供商,仅需更改配置即可实现。此外,Spring AI alibaba支持多种生成式AI模型,包括图像识别等多模态处理能力

whisperzzza的博客 2443

Java图形验证码防OCR实现

本文介绍了一种基于Java的图形验证码生成方案,通过随机字体、彩色字符、干扰线和扭曲变形等技术增强安全性,有效防止OCR识别和机器人破解。支持静态与动态GIF等多种样式,适用于登录、领券等场景,并可结合Redis进行分布式存储管理。

weixin_42163404的博客 1067
上一篇: 大模型书籍:NLP大牛Thomas Wolf等新书《Transformer自然语言处理》,免费分享466页pdf及代码
下一篇: GraphRAG实战--graphrag+autogen+ollama+chainlit实现本地智能机器人
爱喝白开水a
博客等级 码龄3年 6793粉丝 763原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值