Repository navigation
Releases: Dissimilis/MrzScanner
Release list
v1.3.0
Adds recognition evidence APIs and strengthens multi-frame scanning while preserving the managed netstandard2.0 and net8.0 implementation.
- Exposes per-character scores and a count of distinct retained checksum substitutions.
- Adds a reference-date parser constructor for deterministic birth-year resolution.
- Combines close character alternatives across video frames, applies field grammar during voting, and keeps competing document identities separate until corroborated.
- Improves extended document-number arbitration, calendar validation, adaptive template independence, and capture guidance.
- Reduces decoding and template-matching allocations and adds aggregate local image/video evaluators.
Behavior notes: a clearly recognized X in the sex field is preserved and reported as invalid. Call Reset between documents; automatic identity replacement requires two valid sightings, or one when stableFrames is 1. Fused confidence and character scores represent vote support, not calibrated probabilities.
Validation: 154 automated tests pass; both library targets build without warnings. Local aggregate image and perturbed-video regression checks passed. Recognition errors remain possible; checksum validity does not guarantee an accurate transcription.
v1.2.1
Hardening release.
Video sessions constructed with stableFrames above 16 could never turn stable when validity only emerged through frame fusion; the corroboration window now grows with the requested threshold.
Passing a rotation positionally in the stride slot (for example FromNv21(buffer, width, height, 90)) now produces an error message pointing at the rotation overload instead of a bare stride complaint. Unknown pixel layouts throw instead of silently reading as a black image. Small robustness guards in the tilt estimator and capture hint math.
v1.2.0
Hardening release for the camera paths introduced in 1.1.0.
Sensor orientation: MrzImage factories now take the clockwise rotation cameras report for raw buffers, for example MrzImage.FromNv21(buffer, width, height, 0, rotationDegrees). SingleFrame mode does not search orientations, so sideways preview buffers needed this to be readable at all.
Fixes: blank frames no longer pay a wasted tilt retry (the skew estimator's tie handling let the first angle win on featureless frames); the tilt rescue rotates the capped working image instead of full resolution photos; rescued reads map their region back to original image coordinates; the glare hint requires hard clipping so white paper does not trip it; CaptureHints is defensively copied.
v1.1.0
Camera oriented release.
Raw camera frames: MrzImage.FromNv21, FromNv12 and FromI420 accept preview buffers directly. Only the luma plane is read, so there is no JPEG round trip and no color conversion between the camera callback and the reader.
Tilt correction: documents tilted up to about 8 degrees are now detected and read, on top of the existing 90/180/270 degree orientation handling.
Capture guidance: MrzResult.CaptureHints and MrzVideoSession.LastFrameHints report why a frame did not read (no MRZ detected, too small, cut off, blurry, glare, low contrast), so scanning UIs can tell the user what to fix.
v1.0.2
Template matching now scores flattened template banks in batched passes, reusing cell loads across rows for better cache behavior. A few percent faster end to end on top of the 1.0.1 FMA work; no behavior changes.
v1.0.1
Faster template matching on x64: the correlation kernel now uses AVX2/FMA on .NET 8, cutting typical read time by about 10 percent. No behavior changes.
v1.0.0
First release. Scans the MRZ of passports, ID cards and visas from photos: ICAO 9303 parsing for TD1, TD2, TD3 and MRV formats with full check digit validation, managed OCR with checksum guided recognition, MRZ area detection, calibrated confidence with per field detail, and a multi-frame video session for camera capture. Targets netstandard2.0 and net8.0.