Skip to content

ADFA-3813 | Fix OCR image metadata parsing and refactor CV domain#1300

Merged
jatezzz merged 3 commits into
stagefrom
fix/ADFA-3813-ocr-metadata-parsing-experimental
May 14, 2026
Merged

ADFA-3813 | Fix OCR image metadata parsing and refactor CV domain#1300
jatezzz merged 3 commits into
stagefrom
fix/ADFA-3813-ocr-metadata-parsing-experimental

Conversation

@jatezzz
Copy link
Copy Markdown
Collaborator

@jatezzz jatezzz commented May 13, 2026

Description

Fixes an OCR issue where arbitrary metadata values for image files were parsed incorrectly (e.g., reading "image" as "im" or "im_age"), causing broken android:src references in the generated XML. Alongside this fix, the Computer Vision architecture was heavily refactored: complex domain logic was extracted from ComputerVisionViewModel and the monolithic repository into focused, single-responsibility UseCases (RunVisionUC, GenerateXmlUC, PrepareImageUC, etc.) and helper objects (DetectionScaler, LayoutTreeBuilder, TextAssociator).

Details

  • Added regex replacements in DrawableCleaner (ValueCleanersImpl.kt) to correct common OCR misinterpretations for the word "image".
  • Replaced ComputerVisionRepository with VisionRepository to purely handle ML operations.
  • Split monolithic ViewModel logic into isolated UseCases (GenerateXmlUC, ImportPlaceholderImageUC, PrepareImageUC, RemovePlaceholderImageUC, RunVisionUC).
  • Extracted UI mapping and XML tree building logic into standalone components (LayoutTreeBuilder, TextAssociator, and DetectionScaler).
Screen.Recording.2026-05-13.at.11.22.18.AM.mov

Ticket

ADFA-3813

Observation

The domain refactoring drastically reduces the bloat in the ComputerVisionViewModel, effectively decoupling the UI state management from ML detection and XML generation logic.

@jatezzz jatezzz requested review from a team, Daniel-ADFA and avestaadfa May 13, 2026 16:46
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 13, 2026

📝 Walkthrough

Release Notes - ADFA-3813: OCR Image Metadata Parsing Fix & CV Domain Refactoring

Features & Fixes

  • OCR Metadata Parsing Fix: Corrected OCR misinterpretations where "image" was parsed as "im" or "im_age" by adding regex replacements in DrawableCleaner that normalize im_ageimage and standalone im tokens → image before applying @drawable/ references. This fixes broken android:src references in generated XML layouts.

Architecture Refactoring

  • Repository Layer Simplification: Replaced monolithic ComputerVisionRepository (7 methods, 40 lines) with focused VisionRepository (3 core methods: initModel(), detectWidgets(), recognizeText()) and VisionRepositoryImpl to separate ML operations from complex business logic.

  • Domain Logic Extraction: Refactored complex CV pipeline into single-responsibility use cases:

    • RunVisionUC: Orchestrates end-to-end vision pipeline (YOLO detection, OCR, detection merging, annotation parsing) with progress callbacks
    • GenerateXmlUC: XML layout generation
    • PrepareImageUC: Image loading with EXIF rotation detection and smart canvas boundary calculation
    • ImportPlaceholderImageUC / RemovePlaceholderImageUC: Placeholder image lifecycle management
  • Geometry Processing Refactoring: Decomposed 235-line LayoutGeometryProcessor into focused, reusable components:

    • DetectionScaler: Normalized YOLO bounding box (0.0-1.0) → screen-space pixel coordinates with clamping and minimum bounds enforcement
    • LayoutTreeBuilder: Groups scaled boxes into rows and builds layout hierarchy (RadioGroup, CheckboxGroup, HorizontalRow, SimpleView)
    • TextAssociator: Associates OCR text with widgets using spatial overlap and proximity scoring heuristics
  • ViewModel Decoupling: Refactored ComputerVisionViewModel (-300/+108 net lines) to remove duplicate image preparation, detection, and XML generation logic by injecting use cases instead of duplicating business logic in the view layer.

Dependency Injection Updates

  • Updated Koin module to register new use cases as singletons and inject them into ComputerVisionViewModel
  • Changed repository binding from ComputerVisionRepository to VisionRepository
  • Added explicit registrations for helper components: OcrSource, RegionOcrProcessor, GenericBoxResolver

⚠️ Risk Considerations

  • No test coverage for new use cases: No unit or integration tests identified for RunVisionUC, GenerateXmlUC, PrepareImageUC, or the new domain components (DetectionScaler, LayoutTreeBuilder, TextAssociator). High-risk ML pipeline and geometry calculation code lacks automated validation.
  • Large ViewModel refactoring: 108-line net reduction with significant behavioral changes across multiple event handlers introduces regression risk; recommend thorough manual testing of image loading, detection, layout updates, and placeholder interactions.
  • Distributed geometry logic: 235-line processor split across 3 new components (110+38+106 lines) creates integration coupling risk—verify layout correctness, text-widget association accuracy, and boundary scaling edge cases.
  • Removed abstraction layer: Eliminating LayoutGeometryProcessor removes a testing seam; future changes to scaling/layout logic now require testing at use-case or ViewModel level.
  • Constructor signature changes: AndroidXmlGenerator, YoloToXmlConverter, VisionRepository implementations refactored; verify all dependency resolution paths in DI container and runtime bindings are correct.

Walkthrough

Refactors the computer-vision feature: removes the old ComputerVisionRepository/LayoutGeometryProcessor, introduces VisionRepository/VisionRepositoryImpl, breaks geometry into DetectionScaler/TextAssociator/LayoutTreeBuilder, adds domain use cases (Prepare/Run/Generate/Import/Remove), and updates DI and ComputerVisionViewModel to use the new pieces.

Computer‑Vision Refactor (single cohesive cohort)

Layer / File(s) Summary
Repository contract & implementation
cv-image-to-xml/src/main/java/.../VisionRepository.kt, .../VisionRepositoryImpl.kt
Introduces VisionRepository (init/detect/recognize/isInitialized/release) and VisionRepositoryImpl which delegates to YoloModelSource and OcrSource with appropriate dispatcher usage and lifecycle delegation.
Detection scaling utility
.../domain/DetectionScaler.kt
New singleton that converts YOLO-normalized DetectionResult rects into pixel Rect for a target resolution, handling zero source dims, clamping, and minimum-size enforcement.
Text association utilities
.../domain/TextAssociator.kt
New singleton providing assignTextToParents(...) and assignNearbyTextToWidgets(...) to map OCR TextBlocks to visual widgets using overlap, vertical alignment, and proximity scoring with widget-specific cleaning.
Layout tree construction
.../domain/LayoutTreeBuilder.kt
New builder that groups ScaledBoxes into rows, classifies control rows (radio/checkbox), accumulates vertical groups, and emits LayoutItem nodes (radio/checkbox groups, horizontal rows, simple views).
Converter & XML generator updates
.../domain/YoloToXmlConverter.kt, .../domain/xml/AndroidXmlGenerator.kt
YoloToXmlConverter now uses DetectionScaler and TextAssociator (constructor drop of LayoutGeometryProcessor); AndroidXmlGenerator uses LayoutTreeBuilder.buildLayoutTree instead of geometry processor.
Domain use cases
.../domain/usecase/PrepareImageUC.kt, RunVisionUC.kt, GenerateXmlUC.kt, ImportPlaceholderImageUC.kt, RemovePlaceholderImageUC.kt
Adds: PrepareImageUC (decode, EXIF rotate, smart boundary detection → left/right pct), RunVisionUC (detect → resolve → region OCR → merge → filter → parse annotations; reports progress), GenerateXmlUC (wraps converter.generateXmlLayout), Import/Remove placeholder image UCs (delegating to DrawableImportHelper). Cancellation semantics preserved.
ViewModel & DI wiring
.../ui/viewmodel/ComputerVisionViewModel.kt, .../di/ComputerVisionModule.kt
ViewModel constructor changed to accept VisionRepository + use cases; image loading, detection, XML generation, placeholder import/removal now delegate to use cases; resource cleanup delegates to repository.release(). DI module updated to register VisionRepositoryImpl, OcrSource, RegionOcrProcessor, GenericBoxResolver, and singletons for the new use cases; ViewModel factory wired accordingly.
Minor value-cleaning tweak
.../domain/parser/ValueCleanersImpl.kt
DrawableCleaner.clean adds post-processing replacing im_ageimage and standalone imimage prior to final drawable name normalization.
Removed/Deleted artifacts (evidence)
.../data/repository/ComputerVisionRepository.kt, .../data/repository/ComputerVisionRepositoryImpl.kt, .../domain/LayoutGeometryProcessor.kt
The old monolithic repository and the LayoutGeometryProcessor file were removed; their responsibilities were split into the layers above.
sequenceDiagram
    participant VM as ComputerVisionViewModel
    participant Prepare as PrepareImageUC
    participant RunUC as RunVisionUC
    participant Repo as VisionRepository
    participant Yolo as YoloModelSource
    participant OCR as OcrSource
    participant Gen as GenerateXmlUC
    participant Conv as YoloToXmlConverter

    VM->>Prepare: invoke(uri)
    Prepare-->>VM: Result<PreparedImage>

    VM->>RunUC: invoke(bitmap,leftPct,rightPct,onProgress)
    RunUC->>Repo: detectWidgets(bitmap)
    Repo->>Yolo: runInference(bitmap)
    Yolo-->>Repo: detections
    Repo-->>RunUC: Result<List<DetectionResult>>

    RunUC->>Repo: recognizeText(bitmap)
    Repo->>OCR: recognizeText(bitmap)
    OCR-->>Repo: textBlocks
    Repo-->>RunUC: Result<List<TextBlock>>

    RunUC->>RunUC: resolve/regionOcr/merge/filter/parse
    RunUC-->>VM: Result<VisionResult>

    VM->>Gen: invoke(detections, annotations, ...)
    Gen->>Conv: generateXmlLayout(...)
    Conv-->>Gen: Pair<layoutXml, stringsXml>
    Gen-->>VM: Result<Pair<String,String>>
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Possibly related PRs

  • appdevforall/CodeOnTheGo#678: Refactors the same cv-image-to-xml feature; shares removal of old repository/geometry processor and introduces related replacements.
  • appdevforall/CodeOnTheGo#887: Related left/right guide UI changes that feed guide percentages into the vision pipeline used by RunVisionUC.
  • appdevforall/CodeOnTheGo#902: Related ROI filtering logic for margin false-positive suppression; similar filtering was moved into RunVisionUC in this PR.

Suggested reviewers

  • avestaadfa
  • Daniel-ADFA
  • hal-eisen-adfa

🐰 I hopped through boxes, text, and scale,
I stitched the pieces where logic would fail,
Use cases now guide, the ViewModel's light,
Scaled boxes and text find their layout right,
A carrot of code—refactor with zeal! 🥕

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the main objectives: fixing OCR metadata parsing and refactoring the CV domain architecture, which align with the substantial changes in the changeset.
Description check ✅ Passed The description is directly related to the changeset, explaining the OCR fix rationale and detailed refactoring of the CV architecture with specific component names and motivations.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/ADFA-3813-ocr-metadata-parsing-experimental

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/DetectionScaler.kt`:
- Around line 26-27: Integer division in DetectionScaler.kt causes normW and
normH to lose precision; cast operands to floating-point before dividing (e.g.,
convert (rect.right - rect.left) and sourceWidth/sourceHeight to Float/Double)
so normalization uses floating-point math, and ensure normW/normH types match
(Float/Double) where they are used; update the normalization lines referencing
rect, normW, normH, sourceWidth and sourceHeight accordingly.

In
`@cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/ValueCleanersImpl.kt`:
- Around line 167-168: The current cleanup replaces "im_age" but leaves the OCR
variant "im" producing "@drawable/im"; in ValueCleanersImpl (the cleaned ->
finalCleaned flow) update the replacement logic to also normalize standalone
"im" to "image" (use a word-boundary or equivalent check so you don't
accidentally change substrings) before returning "@drawable/$finalCleaned";
ensure you apply this to the same cleaned/finalCleaned variable used in the
return path so empty-value fallback still returns rawValue.

In
`@cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/PrepareImageUC.kt`:
- Around line 45-51: The code in PrepareImageUC.kt that computes orientation
currently catches all Exceptions; narrow this to specific expected exceptions
(e.g., catch (ioe: IOException)) around the
contentResolver.openInputStream(uri)?.use { ... } / ExifInterface(...) call so
only IO problems are swallowed and other unexpected errors still surface;
optionally add an additional catch for SecurityException if permission issues
are possible. Ensure the fallback to ExifInterface.ORIENTATION_NORMAL remains in
the catch block.

In
`@cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/ui/viewmodel/ComputerVisionViewModel.kt`:
- Line 70: When handling ComputerVisionEvent.UpdateGuides in the ViewModel,
sanitize the incoming event.leftPct and event.rightPct before storing: clamp
both values to the [0f, 1f] range, then order them so leftGuidePct <=
rightGuidePct, and finally call _uiState.update with the normalized values
(leftGuidePct and rightGuidePct) to prevent crossed or out-of-range guides from
affecting downstream filtering and annotation parsing.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ce97d103-0463-426a-8c1d-8d278e025120

📥 Commits

Reviewing files that changed from the base of the PR and between b85bbc2 and b667da3.

📒 Files selected for processing (18)
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/ComputerVisionRepository.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/ComputerVisionRepositoryImpl.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/VisionRepository.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/VisionRepositoryImpl.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/di/ComputerVisionModule.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/DetectionScaler.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/LayoutGeometryProcessor.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/LayoutTreeBuilder.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/TextAssociator.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/YoloToXmlConverter.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/ValueCleanersImpl.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/GenerateXmlUC.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/ImportPlaceholderImageUC.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/PrepareImageUC.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/RemovePlaceholderImageUC.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/RunVisionUC.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/xml/AndroidXmlGenerator.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/ui/viewmodel/ComputerVisionViewModel.kt
💤 Files with no reviewable changes (3)
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/ComputerVisionRepository.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/ComputerVisionRepositoryImpl.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/LayoutGeometryProcessor.kt

@jatezzz jatezzz force-pushed the fix/ADFA-3813-ocr-metadata-parsing-experimental branch from 9815c28 to f80a06d Compare May 14, 2026 14:44
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/PrepareImageUC.kt (1)

22-27: ⚡ Quick win

Move blocking I/O operations off Dispatchers.Default to Dispatchers.IO.

ContentResolver.openFileDescriptor(), BitmapFactory.decodeFileDescriptor(), and ContentResolver.openInputStream() are blocking operations that should not occupy the limited Default dispatcher thread pool. This can starve CPU-bound coroutines under concurrent load. Use Dispatchers.IO for decode and EXIF operations, reserving Dispatchers.Default only for the CPU-bound boundary detection.

Proposed refactor
-    suspend operator fun invoke(uri: Uri): Result<PreparedImage> = withContext(Dispatchers.Default) {
-        runCatching {
-            val bitmap = uriToBitmap(uri) ?: throw IllegalStateException("Failed to decode image from URI")
-            val rotatedBitmap = handleImageRotation(uri, bitmap)
-            val (leftBoundPx, rightBoundPx) = SmartBoundaryDetector.detectSmartBoundaries(rotatedBitmap)
+    suspend operator fun invoke(uri: Uri): Result<PreparedImage> = runCatching {
+        val rotatedBitmap = withContext(Dispatchers.IO) {
+            val bitmap = uriToBitmap(uri) ?: throw IllegalStateException("Failed to decode image from URI")
+            handleImageRotation(uri, bitmap)
+        }
+        val (leftBoundPx, rightBoundPx) = withContext(Dispatchers.Default) {
+            SmartBoundaryDetector.detectSmartBoundaries(rotatedBitmap)
+        }
 
         val widthFloat = rotatedBitmap.width.toFloat()
         PreparedImage(
             bitmap = rotatedBitmap,
             leftPct = leftBoundPx / widthFloat,
             rightPct = rightBoundPx / widthFloat
         )
-        }.onFailure {
+    }.onFailure {
         if (it is CancellationException) throw it
-        }
-    }
+    }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/PrepareImageUC.kt`
around lines 22 - 27, The coroutine currently runs all work on
Dispatchers.Default in PrepareImageUC.operator fun invoke; move blocking I/O and
decode work (uriToBitmap, ContentResolver.openFileDescriptor/ openInputStream,
BitmapFactory.decodeFileDescriptor, and EXIF reading used by
handleImageRotation) to Dispatchers.IO, then switch back to Dispatchers.Default
only for CPU-bound work like SmartBoundaryDetector.detectSmartBoundaries; update
invoke to perform I/O steps (calling uriToBitmap and handleImageRotation’s
file/stream operations) inside withContext(Dispatchers.IO) and perform
SmartBoundaryDetector.detectSmartBoundaries(rotatedBitmap) inside
withContext(Dispatchers.Default).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/PrepareImageUC.kt`:
- Around line 55-59: The when block handling EXIF orientation in
PrepareImageUC.kt currently handles only rotation cases; add explicit cases for
mirrored/transposed orientations ExifInterface.ORIENTATION_FLIP_HORIZONTAL (2),
ORIENTATION_FLIP_VERTICAL (4), ORIENTATION_TRANSPOSE (5), and
ORIENTATION_TRANSVERSE (7) so they perform the correct matrix operations instead
of falling through: use postScale(-1f, 1f) for horizontal flip (2),
postScale(1f, -1f) for vertical flip (4), and combine rotation+flip or use
postTranspose/postRotate/postScale for transposed (5) and transverse (7) cases
consistent with how postRotate/postScale are used now; ensure the function still
returns the transformed bitmap when handling these new branches and reference
the existing orientation variable and methods postRotate, postScale,
postTranspose in your changes.

---

Nitpick comments:
In
`@cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/PrepareImageUC.kt`:
- Around line 22-27: The coroutine currently runs all work on
Dispatchers.Default in PrepareImageUC.operator fun invoke; move blocking I/O and
decode work (uriToBitmap, ContentResolver.openFileDescriptor/ openInputStream,
BitmapFactory.decodeFileDescriptor, and EXIF reading used by
handleImageRotation) to Dispatchers.IO, then switch back to Dispatchers.Default
only for CPU-bound work like SmartBoundaryDetector.detectSmartBoundaries; update
invoke to perform I/O steps (calling uriToBitmap and handleImageRotation’s
file/stream operations) inside withContext(Dispatchers.IO) and perform
SmartBoundaryDetector.detectSmartBoundaries(rotatedBitmap) inside
withContext(Dispatchers.Default).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 10080178-0271-4bd8-8fe2-9cd05e96f8de

📥 Commits

Reviewing files that changed from the base of the PR and between b667da3 and f80a06d.

📒 Files selected for processing (18)
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/ComputerVisionRepository.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/ComputerVisionRepositoryImpl.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/VisionRepository.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/VisionRepositoryImpl.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/di/ComputerVisionModule.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/DetectionScaler.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/LayoutGeometryProcessor.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/LayoutTreeBuilder.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/TextAssociator.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/YoloToXmlConverter.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/ValueCleanersImpl.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/GenerateXmlUC.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/ImportPlaceholderImageUC.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/PrepareImageUC.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/RemovePlaceholderImageUC.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/RunVisionUC.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/xml/AndroidXmlGenerator.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/ui/viewmodel/ComputerVisionViewModel.kt
💤 Files with no reviewable changes (3)
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/ComputerVisionRepositoryImpl.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/ComputerVisionRepository.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/LayoutGeometryProcessor.kt
🚧 Files skipped from review as they are similar to previous changes (14)
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/RemovePlaceholderImageUC.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/VisionRepository.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/ImportPlaceholderImageUC.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/DetectionScaler.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/GenerateXmlUC.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/xml/AndroidXmlGenerator.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/parser/ValueCleanersImpl.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/YoloToXmlConverter.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/data/repository/VisionRepositoryImpl.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/usecase/RunVisionUC.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/TextAssociator.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/di/ComputerVisionModule.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/domain/LayoutTreeBuilder.kt
  • cv-image-to-xml/src/main/java/org/appdevforall/codeonthego/computervision/ui/viewmodel/ComputerVisionViewModel.kt

@jatezzz jatezzz merged commit 817ada8 into stage May 14, 2026
2 checks passed
@jatezzz jatezzz deleted the fix/ADFA-3813-ocr-metadata-parsing-experimental branch May 14, 2026 16:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants