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

简介: 该代码实现了一个截屏测试工具,结合了鼠标事件监听、屏幕截图和OCR功能。用户可通过拖动鼠标选择屏幕区域进行截图,并将截图转换为Markdown格式的文本内容。具体步骤包括:初始化大模型客户端、编码图像为Base64格式、捕获指定屏幕区域并保存截图、调用大模型API进行OCR识别并输出Markdown格式的内容。

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

截屏测试

import pyautogui
import base64
from ollama import Client
from pynput import mouse

初始化大模型客户端

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("请按住鼠标左键并拖动来选择矩形区域...")

start_x, start_y = None, None
end_x, end_y = None, None

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

# 计算矩形区域的左上角和右下角坐标
left = min(start_x, end_x)
top = min(start_y, end_y)
width = abs(end_x - start_x)
height = abs(end_y - start_y)

screenshot = pyautogui.screenshot(region=(left, top, width, height))
screenshot_path = "screenshot.png"
screenshot.save(screenshot_path)
return screenshot_path

def perform_ocr(image_path: str):

# system_prompt = "Convert the content of the image into text."
system_prompt = """Convert the provided image into Markdown format. 

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)

目录
相关文章
|
4天前
|
人工智能 自然语言处理 程序员
无编程经验小白如何玩转通义灵码 AI 程序员,让写代码像聊天一样简单
没有编程经验的小白如何玩转通义灵码 AI 程序员,让写代码像聊天一样简单
133 22
|
3天前
|
人工智能 C语言
|
30天前
|
人工智能 Java API
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
本次分享的主题是阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手,由阿里云两位工程师分享。
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
|
1月前
通义灵码企业级检索增强-后端注释生成代码场景DEMO
通义灵码企业级检索增强DEMO展示后端注释生成代码场景。通过上传加密算法的标准化写法(英文注释),大模型能够准确推荐企业标准写法,促进内部知识复用,并支持主动干预生成过程,提升代码规范性和一致性。
|
2月前
|
文字识别 程序员 C++
实战阿里通义灵码极速编程-截屏-OCR-OLlama篇
通过实际案例展示阿里通义灵码如何极大提高编程效率。以开发屏幕截图OCR Python程序为例,使用Win10、Anaconda3、VS Code及通义灵码插件。经过四次提问与优化,从截屏选择矩形区域到调用大模型进行OCR识别,整个过程仅耗时半小时,最终形成可运行的控制台程序。加入界面开发后,总用时2小时,显著提升开发速度和质量。
143 5
|
7月前
|
文字识别
印刷文字识别使用问题之是否支持非标发票的识别
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
7月前
|
存储 文字识别 运维
印刷文字识别使用问题之如何开通统一识别
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
7月前
|
人工智能 文字识别 开发工具
印刷文字识别使用问题之是否支持识别并返回文字在图片中的位置信息
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
7月前
|
人工智能 JSON 文字识别
印刷文字识别使用问题之如何数电发票进行识别
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
7月前
|
文字识别 数据安全/隐私保护 iOS开发
印刷文字识别使用问题之如何识别礼品册上的卡号、密码信息
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。

热门文章

最新文章