Tessera is a free, open-source SDK that reads, validates, and generates the data in the MRZ (machine-readable zone) of passports, ID cards, and visas. It runs on Android, iOS, and the JVM. It reports what it read and checked; your app decides what to do with that.
It is for developers adding document reading to apps or backends. Documentation: Start here.
- Ready-made scanner screen. Android: Read your first MRZ on Android with the ready-made screen. iOS: Read your first MRZ on iOS with the ready-made screen.
- Camera behind your own UI. Android: Read your first MRZ on Android with the headless camera. iOS: Read your first MRZ on iOS with the headless camera.
- Parse an MRZ string. JVM and Kotlin: Read your first MRZ on the JVM. iOS: Parse an MRZ string on iOS.
- Read an MRZ from a saved photo. Android: Read an MRZ from a saved image on Android. iOS: Read an MRZ from a saved image on iOS.
- Generate test MRZ data. Kotlin: Generate an MRZ in Kotlin.
✓ yes, ◐ partial, ✗ no, n/a not applicable. All rows: Capability matrix.
| Capability | JVM | Android | iOS |
|---|---|---|---|
| Parse and read fields | ✓ | ✓ | ◐ |
| Validate and check digits | ✓ | ✓ | ◐ |
| Generate an MRZ | ✓ | ✓ | ◐ |
| Transliterate names | ✓ | ✓ | ✓ |
| Live camera, no UI | n/a | ✓ | ◐ |
| Saved image | ◐ | ✓ | ✓ |
| Ready-made scanner screen | n/a | ✓ | ✓ |
| Diagnostic events | ✓ | ✓ | ◐ |
Release 0.5.3. Minimums: minSdk 23, iOS 18, Java 21. Modules: Choose your pieces.
build.gradle.kts (the JVM needs only the first two lines):
dependencies {
implementation(platform("io.lightine.tessera:tessera-bom:0.5.3"))
implementation("io.lightine.tessera:tessera-mrz-core")
implementation("io.lightine.tessera:tessera-mrz-camera-android")
implementation("io.lightine.tessera:tessera-mrz-camera-ui-android")
}pom.xml (JVM, Maven):
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.lightine.tessera</groupId>
<artifactId>tessera-bom</artifactId>
<version>0.5.3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.lightine.tessera</groupId>
<artifactId>tessera-mrz-core</artifactId>
</dependency>
</dependencies>Package.swift (iOS):
.package(url: "https://github.com/lightine-io/tessera-swift", exact: "0.5.3"),
.product(name: "Tessera", package: "tessera-swift"),
.product(name: "TesseraUI", package: "tessera-swift"),Tutorials · How-to guides · Reference · Explanation. Changes per release: CHANGELOG.md.
Questions and bugs: GitHub issues. Vulnerabilities: report privately, see SECURITY.md. To contribute: CONTRIBUTING.md. Licence: Apache License 2.0 (LICENSE).