📄 test_ai_demo.js

#!/usr/bin/env node

/**
 * AI图像识别模块演示
 * 演示如何使用ai-vision.js在OpenClaw环境中识别图片
 * 
 * 使用方法: 
 * 在OpenClaw agent中直接执行此脚本
 */

import { analyzeImageWithAI, extractImageData } from '/root/.openclaw/workspace/skills/image-table-extractor/ai-vision.js';

console.log('🧪 AI图像识别模块演示\n');
console.log('图片路径: /root/clawd/downloads/A3D320F0F4CC95C19A651F3E1AAB4342_1771574423278.jpg');
console.log('=' .repeat(60));

// 测试图片路径
const testImage = '/root/clawd/downloads/A3D320F0F4CC95C19A651F3E1AAB4342_1771574423278.jpg';

// 验证图片是否存在
import fs from 'fs';
if (!fs.existsSync(testImage)) {
  console.error('❌ 测试图片不存在:', testImage);
  process.exit(1);
}

console.log('✅ 图片验证成功\n');

// 测试1: 基本描述
console.log('测试1: 基本图片描述');
console.log('-'.repeat(50));

const result1 = await analyzeImageWithAI(testImage, '请详细描述这张图片的内容');
console.log(JSON.stringify(result1, null, 2));

// 测试2: 针对性提问
console.log('\n\n测试2: 针对性提问');
console.log('-'.repeat(50));

const result2 = await analyzeImageWithAI(
  testImage, 
  '这张风景照中有哪些主要元素?请描述天空、山脉和树木的情况。'
);
console.log(JSON.stringify(result2, null, 2));

// 测试3: 批量提问
console.log('\n\n测试3: 批量提问');
console.log('-'.repeat(50));

const questions = [
  "这张图片的整体氛围如何?",
  "天空的颜色和云朵情况?",
  "山脉的远近和清晰度?",
  "前景中的植被类型?",
  "适合用作什么?(如壁纸、设计素材等)"
];

for (let i = 0; i < questions.length; i++) {
  console.log(`\n提问 ${i+1}: ${questions[i]}`);
  const answer = await analyzeImageWithAI(testImage, questions[i]);
  console.log(`结果: ${JSON.stringify(answer, null, 2)}`);
}

// 测试4: 结构化数据提取
console.log('\n\n测试4: 结构化数据提取(模拟场景)');
console.log('-'.repeat(50));

// 假设这是一张发票或文档图片
const fields = [
  "文档类型",
  "日期",
  "金额",
  "公司名称", 
  "重要信息"
];

console.log(`提取字段: ${fields.join(', ')}`);
const result4 = await extractImageData(testImage, fields);
console.log(JSON.stringify(result4, null, 2));

console.log('\n' + '='.repeat(60));
console.log('✅ 所有测试完成');
console.log('='.repeat(60));

console.log('\n💡 说明:');
console.log('- 上述演示展示了如何在OpenClaw环境中调用AI能力');
console.log('- analyzeImageWithAI() 函数会返回AI分析结果');
console.log('- extractImageData() 函数用于提取结构化数据');
console.log('- 支持对同一张图片进行多次不同提问');