diff --git a/mobile/openapi/lib/model/sync_asset_ocr_v1.dart b/mobile/openapi/lib/model/sync_asset_ocr_v1.dart index 62b4741b5b..d6d1e97962 100644 --- a/mobile/openapi/lib/model/sync_asset_ocr_v1.dart +++ b/mobile/openapi/lib/model/sync_asset_ocr_v1.dart @@ -33,7 +33,7 @@ class SyncAssetOcrV1 { String assetId; /// Confidence score of the bounding box - num boxScore; + double boxScore; /// OCR entry ID String id; @@ -45,31 +45,31 @@ class SyncAssetOcrV1 { String text; /// Confidence score of the recognized text - num textScore; + double textScore; /// Top-left X coordinate (normalized 0–1) - num x1; + double x1; /// Top-right X coordinate (normalized 0–1) - num x2; + double x2; /// Bottom-right X coordinate (normalized 0–1) - num x3; + double x3; /// Bottom-left X coordinate (normalized 0–1) - num x4; + double x4; /// Top-left Y coordinate (normalized 0–1) - num y1; + double y1; /// Top-right Y coordinate (normalized 0–1) - num y2; + double y2; /// Bottom-right Y coordinate (normalized 0–1) - num y3; + double y3; /// Bottom-left Y coordinate (normalized 0–1) - num y4; + double y4; @override bool operator ==(Object other) => identical(this, other) || other is SyncAssetOcrV1 && @@ -138,19 +138,19 @@ class SyncAssetOcrV1 { return SyncAssetOcrV1( assetId: mapValueOfType(json, r'assetId')!, - boxScore: num.parse('${json[r'boxScore']}'), + boxScore: (mapValueOfType(json, r'boxScore')!).toDouble(), id: mapValueOfType(json, r'id')!, isVisible: mapValueOfType(json, r'isVisible')!, text: mapValueOfType(json, r'text')!, - textScore: num.parse('${json[r'textScore']}'), - x1: num.parse('${json[r'x1']}'), - x2: num.parse('${json[r'x2']}'), - x3: num.parse('${json[r'x3']}'), - x4: num.parse('${json[r'x4']}'), - y1: num.parse('${json[r'y1']}'), - y2: num.parse('${json[r'y2']}'), - y3: num.parse('${json[r'y3']}'), - y4: num.parse('${json[r'y4']}'), + textScore: (mapValueOfType(json, r'textScore')!).toDouble(), + x1: (mapValueOfType(json, r'x1')!).toDouble(), + x2: (mapValueOfType(json, r'x2')!).toDouble(), + x3: (mapValueOfType(json, r'x3')!).toDouble(), + x4: (mapValueOfType(json, r'x4')!).toDouble(), + y1: (mapValueOfType(json, r'y1')!).toDouble(), + y2: (mapValueOfType(json, r'y2')!).toDouble(), + y3: (mapValueOfType(json, r'y3')!).toDouble(), + y4: (mapValueOfType(json, r'y4')!).toDouble(), ); } return null; diff --git a/open-api/immich-openapi-specs.json b/open-api/immich-openapi-specs.json index ad4021fcb7..05262210d0 100644 --- a/open-api/immich-openapi-specs.json +++ b/open-api/immich-openapi-specs.json @@ -23052,6 +23052,7 @@ }, "boxScore": { "description": "Confidence score of the bounding box", + "format": "double", "type": "number" }, "id": { @@ -23068,38 +23069,47 @@ }, "textScore": { "description": "Confidence score of the recognized text", + "format": "double", "type": "number" }, "x1": { "description": "Top-left X coordinate (normalized 0–1)", + "format": "double", "type": "number" }, "x2": { "description": "Top-right X coordinate (normalized 0–1)", + "format": "double", "type": "number" }, "x3": { "description": "Bottom-right X coordinate (normalized 0–1)", + "format": "double", "type": "number" }, "x4": { "description": "Bottom-left X coordinate (normalized 0–1)", + "format": "double", "type": "number" }, "y1": { "description": "Top-left Y coordinate (normalized 0–1)", + "format": "double", "type": "number" }, "y2": { "description": "Top-right Y coordinate (normalized 0–1)", + "format": "double", "type": "number" }, "y3": { "description": "Bottom-right Y coordinate (normalized 0–1)", + "format": "double", "type": "number" }, "y4": { "description": "Bottom-left Y coordinate (normalized 0–1)", + "format": "double", "type": "number" } }, diff --git a/server/src/dtos/sync.dto.ts b/server/src/dtos/sync.dto.ts index 4db4c2738d..dcd42b248f 100644 --- a/server/src/dtos/sync.dto.ts +++ b/server/src/dtos/sync.dto.ts @@ -388,17 +388,17 @@ const SyncAssetOcrV1Schema = z id: z.string().describe('OCR entry ID'), assetId: z.string().describe('Asset ID'), - x1: z.number().describe('Top-left X coordinate (normalized 0–1)'), - y1: z.number().describe('Top-left Y coordinate (normalized 0–1)'), - x2: z.number().describe('Top-right X coordinate (normalized 0–1)'), - y2: z.number().describe('Top-right Y coordinate (normalized 0–1)'), - x3: z.number().describe('Bottom-right X coordinate (normalized 0–1)'), - y3: z.number().describe('Bottom-right Y coordinate (normalized 0–1)'), - x4: z.number().describe('Bottom-left X coordinate (normalized 0–1)'), - y4: z.number().describe('Bottom-left Y coordinate (normalized 0–1)'), + x1: z.number().meta({ format: 'double' }).describe('Top-left X coordinate (normalized 0–1)'), + y1: z.number().meta({ format: 'double' }).describe('Top-left Y coordinate (normalized 0–1)'), + x2: z.number().meta({ format: 'double' }).describe('Top-right X coordinate (normalized 0–1)'), + y2: z.number().meta({ format: 'double' }).describe('Top-right Y coordinate (normalized 0–1)'), + x3: z.number().meta({ format: 'double' }).describe('Bottom-right X coordinate (normalized 0–1)'), + y3: z.number().meta({ format: 'double' }).describe('Bottom-right Y coordinate (normalized 0–1)'), + x4: z.number().meta({ format: 'double' }).describe('Bottom-left X coordinate (normalized 0–1)'), + y4: z.number().meta({ format: 'double' }).describe('Bottom-left Y coordinate (normalized 0–1)'), - boxScore: z.number().describe('Confidence score of the bounding box'), - textScore: z.number().describe('Confidence score of the recognized text'), + boxScore: z.number().meta({ format: 'double' }).describe('Confidence score of the bounding box'), + textScore: z.number().meta({ format: 'double' }).describe('Confidence score of the recognized text'), text: z.string().describe('Recognized text content'), isVisible: z.boolean().describe('Whether the OCR entry is visible'), })