image-reader-xytest

Dev Tools

识别本地图片内容(支持中文),通过 OCR.space 免费 API 实现。

Install

openclaw skills install image-reader-xytest

image-reader Skill

识别本地图片内容(支持中文),通过 OCR.space 免费 API 实现。

工作流程

  1. 接收图片路径
  2. 调用 OCR.space API 进行识别
  3. 返回识别结果

Python 脚本

保存到 {skill_root}/scripts/ocr_image.py

import urllib.request, urllib.parse, base64, io, json, sys
from PIL import Image

img_path = sys.argv[1] if len(sys.argv) > 1 else sys.stdin.read().strip()

img = Image.open(img_path)
img_small = img.resize((1600, 2400), Image.LANCZOS)
buf = io.BytesIO()
img_small.save(buf, format='JPEG', quality=80)
b64_data = base64.b64encode(buf.getvalue()).decode()

url = 'https://api.ocr.space/parse/image'
params = urllib.parse.urlencode({
    'base64Image': 'data:image/jpeg;base64,' + b64_data,
    'language': 'chs',
    'isOverlayRequired': 'false',
    'detectOrientation': 'true',
    'scale': 'true',
    'OCREngine': '2',
})
data = params.encode('utf-8')

req = urllib.request.Request(url, data=data)
req.add_header('Content-Type', 'application/x-www-form-urlencoded')
req.add_header('apikey', 'helloworld')  # OCR.space free demo key

with urllib.request.urlopen(req, timeout=30) as resp:
    raw = resp.read()
    result = json.loads(raw.decode('utf-8', errors='replace'))
    if 'ParsedResults' in result:
        for r in result['ParsedResults']:
            print(r['ParsedText'])
    else:
        print('OCR识别失败:', result)

使用方式

python {skill_root}/scripts/ocr_image.py "F:/1.jpg"

依赖

  • Python 3
  • Pillow (pip install pillow)