diff --git a/config/ai_prompt.md b/config/ai_prompt.md index 44ff1437..c9cb8219 100644 --- a/config/ai_prompt.md +++ b/config/ai_prompt.md @@ -90,31 +90,30 @@ - Include minimal padding (10-15 pixels) around item edges - Ignore background clutter, other items, hands, reflections - ### Rotation Analysis (CRITICAL - ROTATION TO HORIZONTAL TEXT) + ### Rotation Analysis (CRITICAL - SMALL TILT ANGLE MEASUREMENT) - **IMPORTANT: Return the TOTAL ROTATION ANGLE needed to make text perfectly horizontal and readable (left-to-right, top-to-bottom, standard reading position).** + **IMPORTANT: The image has EXIF orientation metadata stripped. Analyze it in its RAW/NATIVE state.** + + **Return the SMALL tilt angle needed to make the text perfectly horizontal and readable.** **Algorithm:** 1. Locate the PRIMARY text/label on the item (part number, manufacturer, specs) - 2. Analyze BOTH the text orientation AND tilt: - - Is the text currently horizontal or vertical/sideways? - - Is the text tilted/rotated relative to its baseline? - 3. Calculate TOTAL rotation to standard horizontal reading: - - Chassis/image tilt: e.g., item tilted 22° → needs -22° or +22° correction - - Text orientation: if vertical → add ±90° to the tilt correction - - Combine both to get final rotation angle + 2. **Measure ONLY the tilt angle**: How many degrees is the text rotated from horizontal? + - Text reads horizontally left-to-right → `0°` + - Text tilted slightly clockwise (right side up) → **negative angle** (e.g., `-15°`) + - Text tilted slightly counter-clockwise (left side up) → **positive angle** (e.g., `+20°`) + 3. **IGNORE text orientation** (vertical/sideways): The image is in raw/native state, so text orientation is simply directional tilt, not a 90° shift + 4. **Return this tilt angle as `rotation_degrees`** (expected range: **-45° to +45°**) + - Clockwise tilt = NEGATIVE value (e.g., `-22°` to level a clockwise tilt) + - Counter-clockwise tilt = POSITIVE value (e.g., `+18°` to level a counter-clockwise tilt) - 4. **Return exactly this value as `rotation_degrees`** (range: -180° to +180°) - - Counter-clockwise rotation needed = POSITIVE value - - Clockwise rotation needed = NEGATIVE value - - **Measurement examples** (TOTAL rotation to make text horizontal): - - Text already horizontal → `0` - - Item tilted 22° clockwise, text horizontal → `+22` (counter-clockwise to level) - - Text vertical (pointing left), ~90° rotation needed → `+90` - - Item tilted 22° clockwise AND text vertical → `+112` (22° + 90°) - - Text pointing right (180° rotated) → `-180` or `+180` (equivalent) - - If uncertain or mixed angles → `0` (safe default) + **Measurement examples** (RAW image, EXIF-stripped, measuring ONLY tilt): + - Text reads perfectly horizontal → `0` + - Item tilted 22° clockwise (text tilts down-right) → `-22` + - Item tilted 15° counter-clockwise (text tilts up-left) → `+15` + - Item slightly rotated 5° → `-5` or `+5` depending on direction + - **SAFETY CHECK**: If your calculated angle is > ±45°, re-examine. Most hardware is only slightly tilted in photos (±30° max) + - If uncertain → `0` (safe default; OpenCV fallback will handle it) ### Confidence Score - Return `confidence`: 0.0-1.0 indicating reliability of crop/rotation analysis