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

【调用通义千问实现手写文字识别】

1.作者介绍

彭鹏,男,西安工程大学电子信息学院,2024级研究生
研究方向:机器视觉与人工智能
电子邮件:17530520325@163.com

高金年,男,西安工程大学电子信息学院,2024级研究生,张宏伟人工智能课题组
研究方向:机器人与智能装备控制技术
电子邮件:2432529790@qq.com

2.OCR技术介绍

OCR是Optical Character Recognition(光学字符识别)的英文简称,它借助光学与计算机技术,将纸上印刷或手写文字读取并转化为计算机可接受、人类能理解的格式。
在这里插入图片描述
图像预处理:在进行文字识别之前,要对带有噪声的文字图像进行处理。以应对纸张的厚薄、光洁度和印刷质量都会造成的文字畸变,断笔、粘连和污点。
字符分割:对文档版面进行分析,首先对每一行进行行分割,再对每一行的文字单独分割。
特征提取:根据字符的结构、笔画等信息,提取能够代表字符的特征。这些特征能够帮助计算机更好地理解字符的形态,为后续的分类识别提供依据。
分类识别:通过深度学习将提取的特征与预定义字库对比,以找出最匹配字符。在分类识别的过程中,模型可以学习到不同字符的特征模式,从而准确地识别出输入图像中的字符。
后处理:对识别结果进行校正、修补和质量评估等处理,以提高识别的准确性和可靠性。

3.通义千问模型

Qwen-VL 是阿里云研发的大规模视觉语言模型。Qwen-VL 可以以图像、文本、检测框作为输入,并以文本和检测框作为输出。

3.1 获取API-KEY

  1. 访问阿里云百炼页面,注册并登录您的阿里云账号。
  2. 选择开通“百炼大模型推理”服务,并等待短信确认服务已成功开通。
    在这里插入图片描述
  3. 从右上角的小人图标进入个人中心 -> API-KEY ->创建新的API-KEY。请妥善保存生成的API Key。
    在这里插入图片描述
    在这里插入图片描述

3.2 调用通义千问模型

1.在左侧列表中选择“模型广场”,找到“图像生成”类别下的“通义千问VL”模型,选择该模型对应的“API调用”按钮。
在这里插入图片描述
2.点击“图片+文本输入”,进入文档专区,并点击“文字提取(ORC)”以获取相关代码
在这里插入图片描述

3.3 代码实现

1.安装需要的库:在终端输入 pip install openai
注:所下载的openai版本应大于1.0.0,若Python版本低于3.7.0则无法下载相应openai版本,需切换Python版本。
2.在 base64_image = encode_image(“test.jpg”) 一行中输入本地图片的路径。
3.在 api_key=———— 中输入自己的API KEY

3.4 实验代码

pip install openai(在终端输入)

import os
from openai import OpenAI
import base64

client = OpenAI(
    # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
    api_key="*******",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)


#  Base64 编码格式
def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")


base64_image = encode_image("C:/Users/艾萨克/Desktop/3.JPG")

completion = client.chat.completions.create(
    model="qwen-omni-turbo",
    messages=[
        {
            "role": "system",
            "content": [{"type": "text", "text": "You are a helpful assistant."}],
        },
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": 
{"url": f"data:image/png;base64,{base64_image}"},
                },
                {"type": "text", "text": "识别图中的文字?"},
            ],
        },
    ],
    # 设置输出数据的模态,当前支持两种:["text","audio"]、["text"]
    modalities=["text", "audio"],
    audio={"voice": "Cherry", "format": "wav"},
    # stream 必须设置为 True,否则会报错
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in completion:
    if chunk.choices:
        print(chunk.choices[0].delta)
    else:
        print(chunk.usage)

3.5 实验结果

输入图片:
输入图片:
运行结果:
在这里插入图片描述

3.6 局限性

1.OCR在处理特殊符号、数学公式、化学式等复杂内容时可能会遇到困难。
输入图片:
在这里插入图片描述
运行结果:
在这里插入图片描述
2. OCR系统通常对标准字体和排版的效果较好,但对于非常规的字体、艺术字或复杂的排版,其识别效果可能会大打折扣
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/108640.html

相关文章:

  • 04-08手写持久层框架——核心配置和映射配置文件解析
  • 从零构建大语言模型全栈开发指南:第四部分:工程实践与部署-4.2.1视觉-语言模型(VLM)架构设计(CLIP与Flamingo模式)
  • HarmonyOS 基础组件和基础布局的介绍
  • Nyquist插件基础:LISP语法-条件语句
  • 数据量管理系统
  • 光学关键尺寸量测设备市场报告:2024年全球市场销售额达到了14.75亿美元
  • 鸿蒙NEXT开发土司工具类(ArkTs)
  • 前端中rem,vh,vw
  • 网约车APP评价系统从0到1
  • 红宝书第二十六讲:详解Web Workers:专用、共享、Service Worker
  • PyTorch中Linear全连接层
  • 视频设备轨迹回放平台EasyCVR如何搭建公共娱乐场所远程视频监控系统
  • 铁路语义分割数据下载RailSem19: A Dataset for Semantic Rail Scene Understanding
  • 使用Android 原生LocationManager获取经纬度
  • 教育软件 UI 设计:打造吸睛又实用的学习入口
  • SELinux
  • Leetcode-100 二分查找常见操作总结
  • 数据点燃创新引擎:数据驱动的产品开发如何重塑未来?
  • Airflow量化入门系列:第一章 Apache Airflow 基础
  • 红宝书第二十五讲:客户端存储(Cookie、localStorage、IndexedDB):浏览器里的“记忆盒子”
  • Leetcode 6233 -- DFS序列 | 两遍DFS
  • Vue中JSEncrypt 数据加密和解密处理
  • Firefox账号同步书签不一致(火狐浏览器书签同步不一致)
  • wireshak抓手机包 wifi手机抓包工具
  • linux 时钟
  • 【爬虫】网页抓包工具--Fiddler
  • 【Audio开发二】Android原生音量曲线调整说明
  • LInux基础指令(二)
  • 【VS+Qt】vs2022打开 vs2015项目
  • FastAPI中Pydantic异步分布式唯一性校验