Initial commit: skills library
- 70 skills with code and documentation - Add .gitignore (ignore __pycache__, output/, temp/, venv/) - Clean up test intermediates and caches
This commit is contained in:
@@ -0,0 +1,145 @@
|
||||
---
|
||||
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秒),建议耐心等待
|
||||
Reference in New Issue
Block a user