ocr_stabilizer 0.2.1
ocr_stabilizer: ^0.2.1 copied to clipboard
Real-time OCR overlay stabilization engine — drift correction, spatial indexing, block tracking. Built for Flutter.
0.2.1 #
Docs + metadata polish. No API change. First pub.dev-shipped release of the v0.2.x line.
Documentation #
- README: install snippet updated to
^0.2.1with a breaking-change pointer back to the 0.2.0 typed-confidence migration. (#14) - README:
TrackedBlock<T>example now lists all 14 getters (was missinginnerScrollerTop,sourceQuality) with a follow-up note pointing integrators atDefaultTrackedBlock<T>orObservableBlock<T>as appropriate. (#14) - README: API Reference tables refreshed for v0.2.x — corrected getter
count, generic on
ObservableBlock<T>, documentedDefaultTrackedBlock<T>,PositionConfidence,TextConfidence, plus the previously-undocumented exports (StabilizationEngine,BlockClassifierService,OverlapResolver,BlockKeyGenerator,MergeResult,StabilizationResult,ClassificationResult,TextVote,IqrOutlier,TextDedupUtils). (#14)
Metadata #
pubspec.yamlgainshomepage:and pub.devtopics:(ocr,overlay,tracking,slam,flutter). (#14).gitignoreexcludes local agentic-scaffolding directory (.ultra/). (#14)
0.2.0 #
Breaking #
TrackedBlock.positionConfidenceandtextConfidencenow return typedPositionConfidence/TextConfidenceextension types (overdouble) instead of rawdouble. Consumers implementingTrackedBlockmust update the getter signatures. The migration path:
Producer sites wrap raw doubles via- final double positionConfidence; - final double textConfidence; + final PositionConfidence positionConfidence; + final TextConfidence textConfidence;.from(value)(range-asserted), or use the.groundTruthsentinel (= 1.0) for deterministic origins. Extension types are zero-cost at runtime.
Added #
PositionConfidence/TextConfidenceextension types inlib/src/types/confidence_types.dart. Range[0.0, 1.0]enforced via.from()factory;.groundTruthstatic const sentinel for DOM/deterministic origins. (#10)DefaultTrackedBlock<T>— concrete reference implementation ofObservableBlock<T>with documented defaults for every required field (notablycarouselIdVotes: {-1: 1}— the engine's phantom-vote sentinel). IncludescopyWithandapplyMerge(MergeResult)convenience. (#5)SpatialBlockIndex.isEmpty— O(1) accessor (was:allBlocks.isEmptyallocated aSet.identity()per call). (#2)StabilizationEngine.stabilize()debug-mode staleness warning when the spatial index appears empty after a non-empty previous call, plus prominent "Caller contract" docstring documenting the consumer's rebuild responsibility. (#2)MergeResultnow throwsArgumentError(not justassert) when invariants are violated, including the confidence-range bypass via the unvalidatedPositionConfidence(double)primary constructor. Asserts strip in release; this guards engine output that flows into consumer caches. (#10)
Changed #
- SDK constraint relaxed from
sdk: ^3.8.1tosdk: ^3.3.0(extension types shipped in Dart 3.3 — the only modern feature this package uses).flutterconstraint pinned to>=3.19.0(the Flutter that bundled Dart 3.3).flutter_lintsdev-dep pinned to^5.0.0to keep dev-deps SDK floor consistent with the package SDK floor. (#3) DriftTrackerrolling windows switched fromList(O(N)removeAt(0)) todart:collection'sQueue(O(1)removeFirst). Type now signals FIFO ring-buffer intent at the declaration site. (#4)DefaultTrackedBlockconstructor throwsArgumentError(not just asserts) when thecontainerId/isInnerScrollerChildinvariant is violated — the reference implementation is state-owning, asserts strip in release. (#5)
Fixed #
SpaceKey.regionIndexreturns 0 as a safe fallback instead of throwingFormatExceptionon malformed keys (forward-compat for externally- constructed or future-format-extension keys). (#1)
Internal #
- New test files:
test/space_key_test.dart,test/confidence_types_test.dart,test/merge_result_test.dart,test/default_tracked_block_test.dart. Test count: 207 (was 180 in v0.1.0).
0.1.0 #
Initial release.
Core #
StabilizationEngine— SAR merge, intra-batch dedup, contradiction detectionDriftTracker— regional drift correction with submap isolationSpatialBlockIndex— grid-cell spatial index for O(cells) overlap queriesOverlapResolver— spatial NMS with language-aware thresholdsBlockKeyGenerator— position+text dedup keys with fuzzy neighbor matchingBlockClassifierService— OCR group classification (fixed/sticky/carousel/IC/normal)
Types #
TrackedBlock<T>/ObservableBlock<P>— block identity interfacesAbsoluteRect— zero-cost coordinate-space safety (extension type)SpaceKey,ContainerId,ScrollContext,StickyFallback— value types
Utilities #
TextDedupUtils— Levenshtein, Jaccard, CJK detectionRobustStats— median, MAD, IQRIqrOutlier— Tukey fence outlier detection