batch_process_ocr.php 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. require __DIR__.'/vendor/autoload.php';
  3. $app = require_once __DIR__.'/bootstrap/app.php';
  4. $kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
  5. $kernel->bootstrap();
  6. use App\Models\OCRRecord;
  7. use App\Services\OCRService;
  8. // Get record IDs from command line or use defaults
  9. $recordIds = $argv[1] ?? '4,5';
  10. $ids = explode(',', $recordIds);
  11. echo "Processing OCR records: " . implode(', ', $ids) . "\n\n";
  12. $ocrService = app(OCRService::class);
  13. foreach ($ids as $id) {
  14. $record = OCRRecord::find(trim($id));
  15. if (!$record) {
  16. echo "❌ Record #{$id} not found\n";
  17. continue;
  18. }
  19. echo "📄 Processing Record #{$record->id}...\n";
  20. echo " Status: {$record->status}\n";
  21. echo " File: {$record->image_filename}\n";
  22. try {
  23. // Call the protected method via reflection
  24. $reflection = new ReflectionClass($ocrService);
  25. $method = $reflection->getMethod('dispatchToOcrService');
  26. $method->setAccessible(true);
  27. $method->invoke($ocrService, $record);
  28. $record->refresh();
  29. echo " ✅ Completed! Questions extracted: {$record->total_questions}\n";
  30. // Show first question
  31. $firstQuestion = $record->questions()->first();
  32. if ($firstQuestion) {
  33. echo " First question: " . substr($firstQuestion->question_text, 0, 60) . "...\n";
  34. }
  35. } catch (\Exception $e) {
  36. echo " ❌ Error: " . $e->getMessage() . "\n";
  37. }
  38. echo "\n";
  39. }
  40. echo "✨ Batch processing complete!\n";