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); } }