Skip to main content

eas_passport_ocr 0.2.9 copy "eas_passport_ocr: ^0.2.9" to clipboard
eas_passport_ocr: ^0.2.9 copied to clipboard

On-device passport MRZ recognition for Flutter Android and iOS.

0.2.9 — 2026-10-22 #

  • Add createScanSession() with one active recognition plus one latest pending frame, state/frame timing callbacks, a single validated-result lock/reset, exclusive SDK ownership and draining lifecycle operations with stale-result suppression. New frames do not cancel active recognition; evidence is never merged across frames.
  • Add immutable PassportImageFrame input for RGBA8888, BGRA8888, NV21 and YUV420 with row/pixel strides and rotation. Convert/rotate/resize in compute and use the existing ML Kit/Vision pipeline without intermediate files. Add recognizeFrame / recognizeFrameResult and optional PassportFrameTextEngine support.
  • Add exported PassportOcrCancellationToken, cancellationToken, maxOcrReads (1–80), and positive maxDuration to recognition APIs. Stop scheduling on cancellation/budget exhaustion, drain active work, retain BUSY until completion and keep warm recognizers. ML Kit and Vision share the read count; deadlines are soft and include call-local preprocessing.
  • Return ABORTED / BUDGET_EXCEEDED through the existing three-string failure contract. Preserve all 11 success fields, repeated confirmation and all required 12 opposite-geometry reads. Budget limits cannot produce partially verified success.
  • Preserve custom path-engine compatibility. Cancellation/time checks surround custom calls; maxOcrReads is rejected for custom engines because internal reads cannot be counted.
  • Add initialize() for reusable recognizer handles, without guaranteeing native model warm-up. Per-frame session deadlines can tighten but never loosen session limits.
  • Include camera-plane and continuous-camera examples with preview-aligned capture, lifecycle cleanup, result lock and content-free timing. Camera permissions, sampling and host display remain the app's responsibility.
  • Align with JavaScript 0.2.9. JS-only search caps, geometric admission and Web demo motion filtering are not Flutter options. Historical iPhone demo measurements and Android builds do not establish universal latency or Android device acceptance.

0.2.8 #

  • Reject unknown issuing/nationality codes using an offline CLDR 48 plus MRTD compatibility table. Unknown codes remain rejected, never changed to a similar code; repeated actual reads must supply the result. Shared with JavaScript.

  • Add a bounded iOS Vision accurate-mode fallback that reads the second row in pixel-preserving segments after early whole-row attempts fail. Segments enter the same evidence pool; repeated confirmation, all 12 opposite-geometry checks and the shared 80-read limit remain required. No OCR characters are replaced or inserted.

  • Retry bounded source-pixel margins after early original-row attempts fail, so faint terminal glyphs outside detected bounds are retained without replacing successful primary crops. No characters are inserted and validation/read budgets are unchanged.

  • Add an iOS Apple Vision fast-mode row reader after early ML Kit attempts, sharing evidence and the 80-read budget. Retain conflict rejection, repeated confirmation and all 12 alternate-geometry checks. Android behavior is unchanged. A full native rebuild is required.

  • Include the iOS plugin and Podspec in source distributions; result JSON and public APIs are unchanged.

  • Decode photos with Flutter's platform image codec, respecting orientation and the 2400-pixel bound; share decoded pixels across rotation and enlargement retries.

  • Pass prepared pages and corrected lines to ML Kit as RGBA bitmaps. Remove intermediate PNG compression, repeated decoding, and temporary image files.

  • Run independent native reads with a bounded, reusable Latin recognizer pool (default 1, configurable 1–4). Drain batches on errors and combine evidence in fixed order.

  • Retain repeated reads, all 12 alternative-geometry conflict checks, strict validation and the 80-read limit. Result JSON is unchanged.

  • Add optional local performance timings without image content, paths or identity data.

  • Use direct typed-byte conversion and equivalent interpolation, and reuse lighting variants within a batch. All variant pixels are checked against the frozen 0.2.7 renderer.

  • Stop immediately once valid passport-number/date candidates irreversibly conflict; preserve strict success validation.

  • iPhone 15 Pro release validation: seven local images across three rounds returned successful results. The difficult JPEG matched all 11 fields of a clearer reference at 1726/1120/1159 ms. Other cross-engine rawMrz differences remain unresolved; these samples do not establish general accuracy or a universal 500 ms limit.

  • Align both SDK versions and share the country-code validation. JavaScript additionally exposes cooperative cancellation, per-frame budgets and scheduling diagnostics; these Web controls do not change this Flutter runtime or its public API.

0.2.7 #

  • Align with JavaScript SDK 0.2.7 under the shared release-version policy.
  • No Flutter runtime, native OCR, result-schema or API changes from 0.2.6. Retain page-local preprocessing reuse and all confirmation/conflict checks.
  • The JavaScript worker-pool and region-proposal changes are browser-specific. Browser timings do not establish Android/iOS OCR performance or accuracy; real-device acceptance testing remains pending.

0.2.6 #

  • Decode and locate rows once per page attempt, reusing geometry across natural, cell and regularized resampling.
  • Preserve native OCR read order, confirmation, conflict checks and public APIs. The JavaScript MRZ-band fast path is not enabled for ML Kit without device validation.
  • Align with JavaScript SDK 0.2.6. Real-device OCR speed and accuracy remain unverified.

0.2.5 #

  • Align the Flutter package version with JavaScript SDK 0.2.5. Future SDK releases share a version number and are released together.
  • Retain the English README and Easit commercial license. No runtime or API changes from 0.2.4.

0.2.4 #

  • Provide an English README covering installation, platform setup, APIs, licensing, and recognition limitations.
  • Clarify that runtime error messages remain in Chinese. No runtime or API changes.

0.2.3 #

  • Add a proprietary evaluation/commercial license and pub.dev installation instructions. Production, commercial use and redistribution require separate written authorization.

  • Reject letters after name padding and prefer fully valid MRZ candidates, matching the JavaScript parser while preserving multi-component and full-width names.

  • Preserve natural glyph proportions and fit long rows within the output canvas without clipping their tails.

  • Add repeat-read confirmation and reject conflicting valid passport numbers/dates; check alternate geometry before accepting natural-line recovery.

  • Add bounded small-image enlargement, rotation and observed-line crops using local ML Kit; cap each scan at 80 native reads.

  • Run image decoding, crop/strip encoding and preprocessing off the UI isolate; remove all derived images on success and failure.

  • Keep the 11-field success and code/msg/suggestion failure contracts, injectable engine API and bundled Latin ML Kit model.

  • Stricter confirmation may reject previously accepted images, and difficult images may take longer. Static/unit/channel tests do not establish Android/iOS device OCR accuracy.

0.2.2 #

  • Keep specific image findings when available; otherwise mention glare, distortion, missing corners and truncated text as possible causes, with full-page retake advice.
  • Preserve the three-field failure JSON and successful result schema.

0.2.1 #

  • Use plain, actionable end-user error messages instead of checksum labels and diagnostic terminology.
  • Preserve code/msg/suggestion, internal diagnostics and OCR behavior.

0.2.0 #

  • Breaking JSON change: failure outcomes now contain only code, msg, suggestion (all strings).
  • Keep image diagnostics internally; place relevant findings in the message and actionable advice in the suggestion.
  • Preserve successful passport fields and the throwing recognition API; update examples, types and copy behavior.

0.1.4 #

  • Replace the fixed capture-cause list with conservative image evidence for localized overexposure, row distortion, border proximity and insufficient character resolution.
  • Add failure-only diagnosis (suspected/unknown, issue locations, measurements, actual failed checks and candidate format status).
  • Keep uncertainty explicit: no document-corner detector, no calibrated causal classifier, no invented identity fields.
  • Preserve the successful 11-field schema and test positive/negative synthetic quality cases.

0.1.3 #

  • Use whole-image MRZ localization by default, with overlapping search regions; no manual start position required.
  • Add recognizeResult for JSON-ready success or failure outcomes, preserving the original 11 success fields and throwing API.
  • Serialize error code, message, possible capture causes and retake suggestions; no unvalidated identity data on failure.
  • Treat capture causes as possibilities, not confirmed glare/corner/distortion diagnoses.

0.1.2 #

  • Add bounded enhanced retries for combined curvature and glare: regularize character geometry, normalize local illumination, and compensate horizontal shear.
  • Keep existing fast paths, strict checks, raw OCR text and result fields unchanged; no new OCR model resources.
  • Add fragmented-glyph / illumination-gradient regression coverage and verify the new user-supplied image locally.

0.1.1 #

  • Add local MRZ row detection, curved-baseline rectification, per-character angle/size normalization and bounded image retries.
  • Run decoding/geometry in a background isolate; delete ML Kit temporary strip files on success and failure.
  • Add correctDistortion (default true) to the default native engine, preserving the result schema and strict MRZ validation.
  • Add cross-SDK synthetic geometry tests and native-channel cleanup tests. Android/iOS real-device OCR remains to be validated.

0.1.0 #

  • Package the Android/iOS ML Kit adapter as a reusable local SDK.
  • Add typed PassportResult and the shared 11-field JSON contract.
  • Add strict MRZ validation, stable error codes, lifecycle management and injectable OCR engine.
  • Add local photo/camera example and public-specimen tests.
0
likes
120
points
327
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

On-device passport MRZ recognition for Flutter Android and iOS.

Topics

#ocr #passport #mrz

License

unknown (license)

Dependencies

flutter, google_mlkit_text_recognition, image

More

Packages that depend on eas_passport_ocr

Packages that implement eas_passport_ocr