OCRFactory.php 825 B

123456789101112131415161718192021222324252627
  1. <?php
  2. namespace App\Services\OCR;
  3. use App\Services\OCR\Drivers\AliyunOCRDriver;
  4. use App\Services\OCR\Drivers\ExternalOCRDriver;
  5. use App\Services\OCR\Drivers\BaiduOCRDriver;
  6. use InvalidArgumentException;
  7. class OCRFactory
  8. {
  9. public static function create(string $driver = null): OCRInterface
  10. {
  11. $driver = $driver ?? config('ocr.driver', 'aliyun');
  12. switch ($driver) {
  13. case 'aliyun':
  14. return new AliyunOCRDriver(config('ocr.drivers.aliyun'));
  15. case 'baidu':
  16. return new BaiduOCRDriver(config('ocr.drivers.baidu'));
  17. case 'external':
  18. return new ExternalOCRDriver(config('ocr.drivers.external'));
  19. default:
  20. throw new InvalidArgumentException("Unsupported OCR driver: {$driver}");
  21. }
  22. }
  23. }