--- name: vision-analyze description: 标准化视觉分析脚本。使用火山方舟doubao-seed-code模型,支持图片OCR和内容识别。可处理单张图片、图片型PDF转文字分析。 --- # Vision Analyze 技能 ## 概述 本技能提供**标准化图片/视觉内容分析**功能,基于火山方舟doubao-seed-code模型。 ## 核心能力 - ✅ **图片OCR识别**:识别图片中的所有文字 - ✅ **内容分析**:图片内容描述、图表解读 - ✅ **PDF转文字**:图片型PDF可通过PyMuPDF转图片后分析 - ✅ **中文支持**:完美支持中文识别 - ✅ **本地处理**:无需云端上传,直接本地调用API ## API配置 - **API**: 火山方舟 Coding Plan - **模型**: doubao-seed-code (唯一支持的视觉模型) - **API Key**: 读取环境变量 `VOLCENGINE_API_KEY` ## 脚本位置 ``` D:\F\NewI\opencode\daily-workspace\.opencode\skills\vision-analyze.py ``` ## 使用方法 ### 命令行使用 ```bash # 基本用法 python vision-analyze.py <图片路径> "<提示词>" # 示例:识别图片文字 python vision-analyze.py image.png "请识别这张图片中的所有文字内容" # 示例:分析PDF页面(需先转图片) python vision-analyze.py page_001.png "请完整转录这段文字" ``` ### Python调用 ```python from vision_analyze import analyze_image # 分析图片 result = analyze_image( "image.png", "请识别这张图片中的所有文字内容" ) print(result) ``` ## PDF处理工作流 对于图片型PDF,需要分两步处理: ### 步骤1:PDF转图片(PyMuPDF) ```python import fitz # PyMuPDF # PDF转图片 doc = fitz.open("document.pdf") for i, page in enumerate(doc): pix = page.get_pixmap(matrix=fitz.Matrix(2, 2)) # 2x缩放 pix.save(f"page_{i+1:03d}.png") doc.close() ``` ### 步骤2:图片分析 ```python # 逐页分析 for i in range(1, len(doc) + 1): img_path = f"page_{i:03d}.png" text = analyze_image(img_path, "请完整转录这段文字") # 保存结果 ``` ## 完整脚本示例 处理27页PDF的脚本: ```python #!/usr/bin/env python3 import sys import fitz # PyMuPDF import os def pdf_to_images(pdf_path, output_dir): """PDF转图片""" doc = fitz.open(pdf_path) os.makedirs(output_dir, exist_ok=True) image_paths = [] for i, page in enumerate(doc): pix = page.get_pixmap(matrix=fitz.Matrix(2, 2)) img_path = os.path.join(output_dir, f"page_{i+1:03d}.png") pix.save(img_path) image_paths.append(img_path) doc.close() return image_paths # 使用vision_analyze的analyze_image函数 from vision_analyze import analyze_image pdf_path = "document.pdf" output_dir = "pdf_images" # 转图片 image_paths = pdf_to_images(pdf_path, output_dir) # 分析 for i, img_path in enumerate(image_paths): text = analyze_image(img_path, "请识别这张图片中的所有文字内容") print(f"=== 第{i+1}页 ===") print(text) ``` ## 常见问题 ### Q: 分析结果乱码怎么办? A: 保存文件时使用UTF-8编码: ```python with open("output.txt", 'w', encoding='utf-8') as f: f.write(text) ``` ### Q: API调用失败怎么办? A: 检查API Key是否有效,或网络连接是否正常 ### Q: PDF页数很多,分析超时怎么办? A: 分批处理,每批10-15页,保存中间结果 ## 注意事项 - ✅ 使用 `vision-analyze.py`** 脚本 - ✅ 使用火山方舟API,稳定可靠 - ⚠️ 响应时间较长 (20-60秒),建议耐心等待