migrant-web/app/Http/Controllers/Api/GoogleVisionOcrController.php

47 lines
1.3 KiB
PHP

<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Services\GoogleVisionOcrService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class GoogleVisionOcrController extends Controller
{
/**
* Upload passport image and extract fields using Google Cloud Vision API.
*/
public function extractPassport(Request $request)
{
$validator = Validator::make($request->all(), [
'passport_file' => 'required|file|image|max:10240', // Max 10MB
]);
if ($validator->fails()) {
return response()->json([
'success' => false,
'message' => 'Validation error.',
'errors' => $validator->errors(),
], 422);
}
$file = $request->file('passport_file');
$result = GoogleVisionOcrService::extractPassportData($file);
if (!$result['success']) {
return response()->json([
'success' => false,
'message' => $result['message'] ?? 'Could not extract data from passport image.',
'data' => $result['data'] ?? null,
], 400);
}
return response()->json([
'success' => true,
'data' => $result['data'],
], 200);
}
}