Skip to main content

A Python wrapper library for ZKFinger fingerprint scanner software.

Project description

pyzkfp

PyPI version

Overview

Because ZKTeco offical SDKs suck and are unstable and full of bugs, I decided to make a simple python wrapper library of their SDKs and save you from the agony of using their products.

Why?

why not?

Compatibility

This library can connect to SLK20R and ZK series, including ZK9500, ZK6500, ZK8500R devices.

Installation

  • You have to first install the ZKFinger SDK from the offical website here or through this direct link (might stop working)
  • Then install this library via pip:
    pip install pyzkfp
    

Features

  • Initialize and interact with ZKFinger Reader devices.
  • Capture fingerprint images.
  • Perform fingerprint 1:1 comparisons.
  • Perform fingerprint 1:N comparisons.
  • Register and identify users.
  • Light & Beep control functions.

Usage

Here's a simple example of how to use this library:

Initialize the ZKFP2 class and open the device

from pyzkfp import ZKFP2

# Initialize the ZKFP2 class
zkfp2 = ZKFP2()
zkfp2.Init()

# Get device count and open first device
device_count = zkfp2.GetDeviceCount()
logger.info(f"{device_count} Devices found, Connecting to the first device.")
zkfp2.OpenDevice(0)

Capture a fingerprint

while True:
    capture = zkfp2.AcquireFingerprint()
    if capture:
        # Implement your logic here
        break

Perform a 1:N comparison

tmp, img = capture
finger_id, score = zkfp2.DBIdentify(tmp)

Perform a 1:1 comparison

res = zkfp2.DBMatch(template1, template2) # returns 1 if match, 0 if not

Register a fingerprint

In order to register a fingerprint, we must collect 3 templates from the same finger. And then we can merge them into one template and store it in the device's database.

templates = []
for i in range(3):
    while True:
        capture = zkfp2.AcquireFingerprint()
        if capture:
            print('fingerprint captured')
            tmp, img = capture
            templates.append(tmp)
            break
regTemp, regTempLen = zkfp2.DBMerge(*templates)

# Store the template in the device's database
finger_id = 1 # The id of the finger to be registered
zkfp2.DBAdd(finger_id, regTemp)

Storing and Loading Templates from an External Database for Future Use

Given that the device's memory clears upon shutdown, this step is crucial for preserving data. You have the option to store regTemp (the final result of the the three merged templates) in your preferred database to retrieve them for later use. The segment of code responsible for loading the registered templates from the database to the device's memory should be run after the device's initialization. Here is a simple way to do it.

members = ... # load members' `regTemp` and their corresponding fingerPrintId from your database.

for member in members:
    fid, temp = member
    zkfp2.DBAdd(fid, temp)
    ...  

To turn on/off the light

zkfp2.Light('green') # green/red/white

Terminate the device and release resources

zkfp2.Terminate()

For more detailed usage instructions, please refer to the example folder (WIP).

Support My Work

If you found this project useful, please hire a private investigator to legally blackmail ZKTeco's dev team, as this would really help spread the good word of this repository.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyzkfp-0.1.5.tar.gz (26.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyzkfp-0.1.5-py3-none-any.whl (34.7 kB view details)

Uploaded Python 3

File details

Details for the file pyzkfp-0.1.5.tar.gz.

File metadata

  • Download URL: pyzkfp-0.1.5.tar.gz
  • Upload date:
  • Size: 26.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for pyzkfp-0.1.5.tar.gz
Algorithm Hash digest
SHA256 90f590072bfdea1f2112b5c95ff239e1b66bd7fa32de09d99f736b366e479b5b
MD5 1d69ca60a6d522a1abf5ceee342aef87
BLAKE2b-256 4befbda42448359dc36d37d07da2daea690a7ac607f64f46144659f992def25a

See more details on using hashes here.

File details

Details for the file pyzkfp-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: pyzkfp-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 34.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for pyzkfp-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e29050ddb995a70f0370e9f11b800f526bd3f53f8aaf43ef73e0ac3ed220ab51
MD5 6ccb09cea990e5bbd225c46a0b30034b
BLAKE2b-256 888789567b61734f7ae2880b915b765137d7dad70b8b46c93289cb2a9d582504

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page