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

本文涉及的产品
文档理解,结构化解析 100页
小语种识别,小语种识别 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)

说明:

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

安装依赖:

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

pip install pyautogui

这样,你就可以通过运行这个脚本来截取屏幕上的矩形区域,并使用大模型进行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}")

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

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

不是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()

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

目录
相关文章
|
28天前
|
JSON 文字识别 数据可视化
Qwen2-VL微调实战:LaTex公式OCR识别任务(完整代码)
《SwanLab机器学习实战教程》推出了一项基于Qwen2-VL大语言模型的LaTeX OCR任务,通过指令微调实现多模态LLM的应用。本教程详述了环境配置、数据集准备、模型加载、SwanLab集成及微调训练等步骤,旨在帮助开发者轻松上手视觉大模型的微调实践。
|
2月前
|
自然语言处理 IDE 测试技术
通义灵码——有了它让我的编程效率和质量直线上升!
作为一名大数据开发工程师,我每天与代码和数据打交道,享受解决复杂问题的乐趣。最近,我遇到了一位超级“码”力助手——通义灵码。它不仅是一个简单的代码补全工具,更像是一个拥有高度智慧的编程伙伴,能够理解我的编程意图,给出最合适的建议,大大提升了我的工作效率和编程体验。本文将分享如何在VsCode中安装和使用通义灵码,以及它在我的实际编程工作中发挥的重要作用。
|
2月前
|
人工智能 自然语言处理 前端开发
用通义灵码,从 0 开始打造一个完整APP,无需编程经验就可以完成
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。本教程完全免费,而且为大家准备了 100 个降噪蓝牙耳机,送给前 100 个完成的粉丝。获奖的方式非常简单,只要你跟着教程完成第一课的内容就能获得。
11032 17
|
3天前
|
文字识别 测试技术 API
实战阿里通义灵码极速编程-截屏-OCR-Ollama篇代码
该代码实现了一个截屏测试工具,结合了鼠标事件监听、屏幕截图和OCR功能。用户可通过拖动鼠标选择屏幕区域进行截图,并将截图转换为Markdown格式的文本内容。具体步骤包括:初始化大模型客户端、编码图像为Base64格式、捕获指定屏幕区域并保存截图、调用大模型API进行OCR识别并输出Markdown格式的内容。
34 9
|
1月前
|
自然语言处理 前端开发 Serverless
基于阿里云通义千问开发编程辅助与代码生成工具
随着软件开发需求的增加,编程辅助与代码生成工具成为开发者提高效率的利器。这类工具能够根据用户描述生成代码片段、协助调试、生成自动化脚本等,大大减少重复性劳动。阿里云通义千问作为一款先进的大语言模型,具备强大的自然语言处理和代码生成能力,非常适合用于开发这样的工具。
65 3
|
2月前
|
人工智能 自然语言处理 IDE
通义灵码--我的编程好伙伴,让我晋升编程大神,从安装到使用
作为一名大数据开发工程师,我在编程过程中使用了通义灵码的@workspace与@terminal工具,这些工具极大地提高了我的工作效率,使我在处理新项目代码和实现新需求时更加得心应手。通过这些工具,我能够在不离开IDE的情况下快速解决问题,生成代码,优化现有代码,并通过智能问答功能获取即时帮助。通义灵码不仅支持多种主流编程语言,还提供了丰富的功能,如代码生成、单元测试生成、代码优化等,显著提升了我的编程体验。强烈推荐给所有希望提高编程效率的开发者。
|
2月前
|
人工智能 自然语言处理 IDE
通义灵码让AI帮你实现自动化编程
通义灵码是由阿里云与通义实验室联合开发的智能编码辅助工具,具备行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答及异常报错排查等功能。该工具支持200多种编程语言,兼容主流IDE,如Visual Studio Code、Visual Studio和JetBrains IDEs。通义灵码在Gartner发布的AI代码助手魔力象限中表现出色,成为唯一进入挑战者象限的中国科技公司。目前,通义灵码下载量已超过470万,每日辅助生成代码超3000万次,被开发者广泛采用。
|
2月前
|
自然语言处理 算法 开发工具
阿里云通义灵码:开启高效编程之门的神奇工具
阿里云通义灵码,基于先进的人工智能技术,为开发者提供高效、高质量的代码生成服务。它简化了软件开发流程,降低了编程门槛,使开发者能够更快捷地实现创意,无论是新手还是资深人士,皆能从中受益,享受编程的乐趣。通过阿里云平台轻松注册、安装插件,即可体验其强大的功能,开启智能化编程新时代。
|
3月前
|
自然语言处理 Java API
Spring Boot 接入大模型实战:通义千问赋能智能应用快速构建
【10月更文挑战第23天】在人工智能(AI)技术飞速发展的今天,大模型如通义千问(阿里云推出的生成式对话引擎)等已成为推动智能应用创新的重要力量。然而,对于许多开发者而言,如何高效、便捷地接入这些大模型并构建出功能丰富的智能应用仍是一个挑战。
322 6
|
3月前
|
人工智能 Python
AI师傅和通义灵码合作助力你学编程
湖北的一位股民通过AI学习了使用通义灵码制作股票浮动止盈点计算器,大幅提升了效率。通过描述需求、编写代码、解释代码和纠错等步骤,实现了从获取股票最高价到计算止盈价的全过程,简化了操作流程,提高了投资决策的准确性。

热门文章

最新文章