04db423416
- 70 skills with code and documentation - Add .gitignore (ignore __pycache__, output/, temp/, venv/) - Clean up test intermediates and caches
146 lines
3.4 KiB
Markdown
146 lines
3.4 KiB
Markdown
---
|
||
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秒),建议耐心等待
|