Metadata-Version: 2.4
Name: afis
Version: 1.0.1
Summary: Classical AFIS library: minutiae extraction, matching, and quality (Python + optional native NBIS)
Author-email: Ashok Pant <asokpant@gmail.com>
Maintainer-email: Ashok Pant <asokpant@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/ashokpant/afis
Project-URL: Repository, https://github.com/ashokpant/afis
Project-URL: Issues, https://github.com/ashokpant/afis/issues
Keywords: fingerprint,afis,biometrics,minutiae,mindtct,bozorth3,mcc,nfiq
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Image Recognition
Classifier: Topic :: Security
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.24
Requires-Dist: scipy>=1.10
Requires-Dist: scikit-image>=0.20
Provides-Extra: fast
Requires-Dist: numba>=0.58; extra == "fast"
Provides-Extra: io
Requires-Dist: pillow>=9.0; extra == "io"
Provides-Extra: test
Requires-Dist: pytest>=7.0; extra == "test"
Requires-Dist: pillow>=9.0; extra == "test"
Dynamic: license-file

# afis

Classical AFIS toolkit for fingerprint minutiae extraction, matching, and
quality assessment. Pure Python by default; optional native NBIS backend
(`libafis_lfs`) when built on **macOS** or **Linux**.

## Install

```bash
make install
```

Uses [uv](https://docs.astral.sh/uv/). Equivalent:

```bash
uv sync --all-extras --group dev
make native
```

`make native` builds `libafis_lfs.dylib` (macOS) or `libafis_lfs.so` (Linux)
into `afis/_native/`. Compiles in parallel (`-j`); install [ccache](https://ccache.dev/)
for faster rebuilds.

## Quickstart

```python
from afis import FingerprintProcessor, match_templates

proc = FingerprintProcessor(backend="auto")
a = proc.process("finger_a.png")
b = proc.process("finger_b.png")
print(a.n_minutiae, a.header.image_quality)

result = match_templates(
    a.minutiae, b.minutiae,
    method="bozorth3",
    height_a=a.header.height,
    height_b=b.header.height,
)
print(result.score, result.decision)
```

## CLI

```bash
uv run afis extract finger.png finger.xyt
uv run afis match a.xyt b.xyt --method bozorth3 --height 480
uv run afis quality finger.png
```

## Develop

```bash
make test
make build
```

## License

MIT. Copyright (c) 2026 Ashok Pant.
