const { DocumentProcessorServiceClient } = require('@google-cloud/documentai'); // Configuration const PROJECT_ID = 'cim-summarizer'; const LOCATION = 'us'; async function createProcessor() { console.log('๐Ÿ”ง Creating Document AI Processor...\n'); const client = new DocumentProcessorServiceClient(); try { // First, let's check what processor types are available console.log('1. Checking available processor types...'); // Try to create a Document OCR processor console.log('2. Creating Document OCR processor...'); const [operation] = await client.createProcessor({ parent: `projects/${PROJECT_ID}/locations/${LOCATION}`, processor: { displayName: 'CIM Document Processor', type: 'projects/245796323861/locations/us/processorTypes/ocr-processor', }, }); console.log(' โณ Waiting for processor creation...'); const [processor] = await operation.promise(); console.log(` โœ… Processor created successfully!`); console.log(` ๐Ÿ“‹ Name: ${processor.name}`); console.log(` ๐Ÿ†” ID: ${processor.name.split('/').pop()}`); console.log(` ๐Ÿ“ Display Name: ${processor.displayName}`); console.log(` ๐Ÿ”ง Type: ${processor.type}`); console.log(` ๐Ÿ“ Location: ${processor.location}`); console.log(` ๐Ÿ“Š State: ${processor.state}`); const processorId = processor.name.split('/').pop(); console.log('\n๐ŸŽฏ Configuration:'); console.log(`Add this to your .env file:`); console.log(`DOCUMENT_AI_PROCESSOR_ID=${processorId}`); return processorId; } catch (error) { console.error('โŒ Error creating processor:', error.message); if (error.message.includes('already exists')) { console.log('\n๐Ÿ“‹ Processor already exists. Listing existing processors...'); try { const [processors] = await client.listProcessors({ parent: `projects/${PROJECT_ID}/locations/${LOCATION}`, }); if (processors.length > 0) { processors.forEach((processor, index) => { console.log(`\n๐Ÿ“‹ Processor ${index + 1}:`); console.log(` Name: ${processor.displayName}`); console.log(` ID: ${processor.name.split('/').pop()}`); console.log(` Type: ${processor.type}`); console.log(` State: ${processor.state}`); }); const processorId = processors[0].name.split('/').pop(); console.log(`\n๐ŸŽฏ Using existing processor ID: ${processorId}`); console.log(`Add this to your .env file: DOCUMENT_AI_PROCESSOR_ID=${processorId}`); return processorId; } } catch (listError) { console.error('Error listing processors:', listError.message); } } throw error; } } async function testProcessor(processorId) { console.log(`\n๐Ÿงช Testing Processor: ${processorId}`); const client = new DocumentProcessorServiceClient(); try { const processorPath = `projects/${PROJECT_ID}/locations/${LOCATION}/processors/${processorId}`; // Get processor details const [processor] = await client.getProcessor({ name: processorPath, }); console.log(` โœ… Processor is active: ${processor.state === 'ENABLED'}`); console.log(` ๐Ÿ“‹ Display Name: ${processor.displayName}`); console.log(` ๐Ÿ”ง Type: ${processor.type}`); if (processor.state === 'ENABLED') { console.log(' ๐ŸŽ‰ Processor is ready for use!'); return true; } else { console.log(` โš ๏ธ Processor state: ${processor.state}`); return false; } } catch (error) { console.error(` โŒ Error testing processor: ${error.message}`); return false; } } async function main() { try { const processorId = await createProcessor(); await testProcessor(processorId); console.log('\n๐ŸŽ‰ Document AI Processor Setup Complete!'); console.log('\n๐Ÿ“‹ Next Steps:'); console.log('1. Add the processor ID to your .env file'); console.log('2. Test with a real CIM document'); console.log('3. Integrate with your processing pipeline'); } catch (error) { console.error('\nโŒ Setup failed:', error.message); console.log('\n๐Ÿ’ก Alternative: Create processor manually at:'); console.log('https://console.cloud.google.com/ai/document-ai/processors'); console.log('1. Click "Create Processor"'); console.log('2. Select "Document OCR"'); console.log('3. Choose location: us'); console.log('4. Name it: "CIM Document Processor"'); process.exit(1); } } if (require.main === module) { main(); } module.exports = { createProcessor, testProcessor };