实战阿里通义灵码极速编程-截屏-OCR-OLlama篇

本文涉及的产品
票据凭证识别,票据凭证识别 200次/月
车辆物流识别,车辆物流识别 200次/月
个人证照识别,个人证照识别 200次/月
简介: 通过实际案例展示阿里通义灵码如何极大提高编程效率。以开发屏幕截图OCR Python程序为例,使用Win10、Anaconda3、VS Code及通义灵码插件。经过四次提问与优化,从截屏选择矩形区域到调用大模型进行OCR识别,整个过程仅耗时半小时,最终形成可运行的控制台程序。加入界面开发后,总用时2小时,显著提升开发速度和质量。

这里测试的大模型主打一个免费,阿里通义灵码免费,ollama免费。

实际举例-阿里通义灵码极大提高编程效率

以实际使用为例验证极大提高编程效率

做一个屏幕截图OCR Python程序

一.系统配置:
win10 anaconda3 python10以上虚拟环境,vs code 和 通义灵码插件最新版本,有一个ollama加载大模型的环境,大模型是llama3.2-vision:11b。

二.向通义灵码提出正确需求。

在vs code系统左下角,通义系统的对会话框向通义灵码提问。

1.提问:
python编程,在win11系统截屏,截屏方式鼠标选取矩形方框,将选取的方框形成图片文件,将文件传给大模型,
利用大模型做ocr,做文字识别.对大模型的访问方式参照ocr_test0302.py文件的内容。
你可以将程序写入你自己定义的python文件。

通义灵码回答:
为了实现你的需求,我们需要编写一个Python脚本,该脚本能够截取屏幕上的矩形区域,将截取的图像保存为文件,
然后使用大模型进行OCR文字识别。
我们可以使用pyautogui库来截取屏幕,并使用你提供的ocr_test0302.py文件中的逻辑来调用大模型。

以下是完整的Python脚本:

import pyautogui
import base64
from ollama import Client

# 初始化大模型客户端
client = Client(
    host='http://192.168.0.37:11434',
    headers={
   'x-some-header': 'some-value'}
)

def encode_image(image_path: str) -> str:
    with open(image_path, "rb") as image_file:
        encoded_string = base64.b64encode(image_file.read()).decode("utf-8")
    return f"data:image/jpeg;base64,{encoded_string}"

def capture_screen_region():
    print("请在接下来的5秒内选择屏幕上的矩形区域...")
    pyautogui.sleep(5)  # 等待5秒,让用户选择区域
    x, y, width, height = pyautogui.prompt(text='输入矩形区域的坐标(x, y, width, height)', title='选择区域', default='0, 0, 100, 100').split(',')
    x, y, width, height = int(x), int(y), int(width), int(height)
    screenshot = pyautogui.screenshot(region=(x, y, width, height))
    screenshot_path = "screenshot.png"
    screenshot.save(screenshot_path)
    return screenshot_path

def perform_ocr(image_path: str):
    system_prompt = """Convert the provided image into Markdown format. Ensure that all content from the page is included, such as headers, footers, subtexts, images (with alt text if possible), tables, and any other elements.

    Requirements:

    - Output Only Markdown: Return solely the Markdown content without any additional explanations or comments.
    - No Delimiters: Do not use code fences or delimiters like \`\`\`markdown.
    - Complete Content: Do not omit any part of the page, including headers, footers, and subtext.
    """

    response = client.chat(
        model='llama3.2-vision:11b',
        messages=[
            {
   
                'role': 'user',
                'content': system_prompt,
                'images': [image_path],
            }
        ],
    )

    return response.message.content

if __name__ == "__main__":
    image_path = capture_screen_region()
    markdown_content = perform_ocr(image_path)
    print(markdown_content)
AI 代码解读

说明:

  1. 屏幕截取:使用pyautogui库来截取屏幕上的矩形区域。用户需要在5秒内选择屏幕上的区域,并输入该区域的坐标(x, y, width, height)。
  2. 图像编码:将截取的图像保存为文件,并使用encode_image函数将其编码为Base64格式。
  3. 大模型调用:使用ollama库中的Client类来调用大模型进行OCR文字识别。
  4. 输出结果:将大模型返回的Markdown格式内容打印出来。

安装依赖:

确保安装了pyautogui库,可以使用以下命令安装:

pip install pyautogui
AI 代码解读

这样,你就可以通过运行这个脚本来截取屏幕上的矩形区域,并使用大模型进行OCR文字识别了。

问题分析:

我对程序测试,很不靠谱,撇了一眼程序
有如下片段
def capture_screen_region():
print("请在接下来的5秒内选择屏幕上的矩形区域...")
pyautogui.sleep(5) # 等待5秒,让用户选择区域
这很不靠谱。

2 提问:不能要求使用者输入选择区域,应该是两次点按鼠标,选择区域。

阿里灵码又是疯狂输出:
有如下片段:
def capture_screen_region():
print("请在接下来的5秒内点击屏幕上的两个点来选择矩形区域...")
pyautogui.sleep(5) # 等待5秒,让用户点击

# 获取第一次点击位置
first_click = pyautogui.position()
print(f"第一次点击位置: {first_click}")

# 获取第二次点击位置
second_click = pyautogui.position()
print(f"第二次点击位置: {second_click}")
AI 代码解读

不好用,原因是现代程序都是事件驱动的,没有必须顺序执行的。

3.提问:你选择矩形框还不是win的习惯性操作,最流行的做法是按住鼠标左键,不松开,移动鼠标,松开左键,完成矩形框区域的选择。

阿里灵码又是疯狂输出:但这次还是
print("请按住鼠标左键并拖动来选择矩形区域...")

# 等待鼠标左键按下
while not pyautogui.mouseDown(button='left'):
    pass

# 获取鼠标按下位置
start_x, start_y = pyautogui.position()
print(f"鼠标按下位置: ({start_x}, {start_y})")

# 等待鼠标左键释放
while pyautogui.mouseDown(button='left'):
    pass

# 获取鼠标释放位置
end_x, end_y = pyautogui.position()
print(f"鼠标释放位置: ({end_x}, {end_y})")
AI 代码解读

不是win程序的使用习惯。

4 提问:在pyautogui中,按下左键和释放是同样的调用方式? 【注释,看程序,两次使用 while pyautogui.mouseDown(button='left'):】

阿里灵码又是疯狂输出:
这次有如下代码,应该是前进了一步
def on_click(x, y, button, pressed):
nonlocal start_x, start_y, end_x, end_y
if button == mouse.Button.left:
if pressed:
start_x, start_y = x, y
print(f"鼠标按下位置: ({start_x}, {start_y})")
else:
end_x, end_y = x, y
print(f"鼠标释放位置: ({end_x}, {end_y})")
return False # 停止监听

# 创建鼠标监听器
with mouse.Listener(on_click=on_click) as listener:
    listener.join()
AI 代码解读

至此程序可以运行,并在控制台返回识别的文本。
我一共提问4次。编码的基本框架有了,下面就是细化了。
这个过程用时半个小时,效率极高。
一般的程序员调试都不止30分钟。
现在这个程序是控制台程序,没有界面,我用灵码插件加界面一共用了2小时,小伙伴们可以一起来试试。

目录
打赏
0
4
5
0
76
分享
相关文章
DeepSeek加持的通义灵码2.0 AI程序员实战案例:助力嵌入式开发中的算法生成革新
本文介绍了通义灵码2.0 AI程序员在嵌入式开发中的实战应用。通过安装VS Code插件并登录阿里云账号,用户可切换至DeepSeek V3模型,利用其强大的代码生成能力。实战案例中,AI程序员根据自然语言描述快速生成了C语言的base64编解码算法,包括源代码、头文件、测试代码和CMake编译脚本。即使在编译错误和需求迭代的情况下,AI程序员也能迅速分析问题并修复代码,最终成功实现功能。作者认为,通义灵码2.0显著提升了开发效率,打破了编程语言限制,是AI编程从辅助工具向工程级协同开发转变的重要标志,值得开发者广泛使用。
7875 68
DeepSeek加持的通义灵码2.0 AI程序员实战案例:助力嵌入式开发中的算法生成革新
高效部署通义万相Wan2.1:ComfyUI文生/图生视频实战,工作流直取!
通义万相Wan2.1开源不到一周,已登顶HuggingFace Model 和 Space 榜双榜首,在HuggingFace和ModelScope平台的累计下载量突破100万次,社区热度持续攀升!为响应小伙伴们对ComfyUI工作流运行Wan2.1的强烈需求,社区开发者整理了实战教程👇
高效部署通义万相Wan2.1:ComfyUI文生/图生视频实战,工作流直取!
高效部署通义万相Wan2.1:使用Gradio搭建WebUI体验实战
随着通义万相Wan2.1 在社区的热度持续上涨,魔搭创空间的体验Demo(https://modelscope.cn/studios/Wan-AI/Wan-2.1)已经排起长队。
通义灵码上新推理模型,快来体验数学编程双冠王 Qwen2.5-Max
近日,通义灵码上新模型选择功能,除新增 DeepSeek 满血版 V3 和 R1 外,Qwen2.5-Max 也正式上线,它使用了超过 20 万亿 token 的预训练数据及精心设计的后训练方案进行训练。
通义灵码 AI实战《手把手教你用通义灵码写一个音乐电子小闹钟》
通义灵码DeepSeek版本相比qwen2.5,增强了深度思考和上下文理解能力,显著提升了开发效率,尤其适合代码能力较弱的运维人员,真正实现了“代码即服务”。
81 1
无编程经验小白如何玩转通义灵码 AI 程序员,让写代码像聊天一样简单
没有编程经验的小白如何玩转通义灵码 AI 程序员,让写代码像聊天一样简单
245 22
最新全球模型榜单:通义千问Qwen2.5-Max数学及编程能力第一!
最新全球模型榜单:通义千问Qwen2.5-Max数学及编程能力第一!
73 5
|
17天前
|
放弃单一模型!通义灵码多模型混搭调参实战 - 实测Qwen2.5代码通过率提升27%
本报告展示了模型性能压测结果,使用Python脚本对多个AI模型(如DeepSeek-R1、Qwen2.5-72B、DeepSeek-V3)进行测试。任务包括代码补全、SQL生成和测试用例生成,记录响应时间及Tokens消耗,并统计代码通过率。结果显示,各模型在不同任务上的表现有所差异,Qwen2.5-72B在代码补全任务中表现出色,平均响应时间为3.8秒,代码通过率达95%。
152 4
通义千问Qwen2.5-Max登上大模型盲测榜单全球前十,数学及编程能力夺冠
通义千问Qwen2.5-Max登上大模型盲测榜单全球前十,数学及编程能力夺冠

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等