feat: 新增 account 和 plan 目录
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
102
account/admin/skills/image-understander/scripts/main.py
Normal file
102
account/admin/skills/image-understander/scripts/main.py
Normal file
@@ -0,0 +1,102 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
图片理解主入口脚本
|
||||
支持图片描述、OCR文字提取、物体识别、图片问答
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from image_understander import ImageUnderstander
|
||||
|
||||
|
||||
def parse_args():
|
||||
"""解析命令行参数"""
|
||||
parser = argparse.ArgumentParser(
|
||||
description="图片理解工具 - 基于 OpenAI GPT-4 Vision",
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
epilog="""
|
||||
示例:
|
||||
# 图片描述
|
||||
python main.py -i photo.jpg -m describe
|
||||
|
||||
# 提取文字
|
||||
python main.py -i screenshot.png -m ocr
|
||||
|
||||
# 识别物体
|
||||
python main.py -i photo.jpg -m objects
|
||||
|
||||
# 图片问答
|
||||
python main.py -i photo.jpg -m qa -q "这个图片里有什么?"
|
||||
"""
|
||||
)
|
||||
|
||||
parser.add_argument("-i", "--image", required=True, help="图片路径")
|
||||
parser.add_argument("-m", "--mode", default="describe",
|
||||
choices=["describe", "ocr", "objects", "qa"],
|
||||
help="理解模式 (默认: describe)")
|
||||
parser.add_argument("-a", "--api-key", help="OpenAI API Key")
|
||||
parser.add_argument("-q", "--prompt", default="请详细描述这张图片",
|
||||
help="问答模式的问题 (默认: 请详细描述这张图片)")
|
||||
parser.add_argument("-o", "--output", help="输出文件路径 (JSON格式)")
|
||||
parser.add_argument("-v", "--verbose", action="store_true", help="详细输出")
|
||||
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def main():
|
||||
"""主函数"""
|
||||
args = parse_args()
|
||||
|
||||
# 检查图片文件
|
||||
if not os.path.exists(args.image):
|
||||
print(f"❌ 错误: 图片文件不存在: {args.image}")
|
||||
sys.exit(1)
|
||||
|
||||
# 获取 API Key
|
||||
api_key = args.api_key or os.environ.get("OPENAI_API_KEY")
|
||||
if not api_key:
|
||||
print("❌ 错误: 请设置 OpenAI API Key")
|
||||
print(" 使用方式:")
|
||||
print(" 1. 环境变量: set OPENAI_API_KEY=sk-your-key")
|
||||
print(" 2. 命令行参数: python main.py -a sk-your-key -i photo.jpg")
|
||||
sys.exit(1)
|
||||
|
||||
# 初始化理解器
|
||||
understander = ImageUnderstander(api_key, verbose=args.verbose)
|
||||
|
||||
# 根据模式调用
|
||||
print(f"🔍 正在分析图片: {args.image}")
|
||||
print(f"📋 模式: {args.mode}")
|
||||
print("-" * 50)
|
||||
|
||||
if args.mode == "describe":
|
||||
result = understander.describe(args.image)
|
||||
print(result)
|
||||
elif args.mode == "ocr":
|
||||
result = understander.extract_text(args.image)
|
||||
print(result)
|
||||
elif args.mode == "objects":
|
||||
result =understander.identify_objects(args.image)
|
||||
print(result)
|
||||
elif args.mode == "qa":
|
||||
result = understander.answer_question(args.image, args.prompt)
|
||||
print(result)
|
||||
|
||||
# 保存结果
|
||||
if args.output:
|
||||
output_data = {
|
||||
"mode": args.mode,
|
||||
"image": args.image,
|
||||
"result": result
|
||||
}
|
||||
with open(args.output, "w", encoding="utf-8") as f:
|
||||
json.dump(output_data, f, ensure_ascii=False, indent=2)
|
||||
print(f"\n💾 结果已保存到: {args.output}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user