BUCKYVERSE

Status: Proposed

Context:

The project requires integration with a CZUR scanner for image acquisition as part of Task 5: Implement Specialized Detectors. Subtask 5.1 (Scanner API Research) was initiated to determine the best method for programmatic interaction with CZUR scanners. Initial research indicates that CZUR does not provide an official, publicly documented Software Development Kit (SDK) or a general-purpose API for their scanners. For example, the product page for the CZUR Lens Pro model explicitly states "SDK Development Package: No".

Decision Drivers:

Considered Options:

  1. Official CZUR SDK/API:

    • Description: Utilize a software development kit or API provided directly by CZUR.
    • Pros: Typically the most straightforward and supported method.
    • Cons: Current research strongly suggests this is not available.
    • Investigation: Extensive searches of CZUR's website and general web searches have not yielded an official SDK for general developer use.
  2. TWAIN Protocol:

    • Description: Use the TWAIN standard, an API and protocol for communication between software and image acquisition devices like scanners.
    • Pros: Standardized protocol; many TWAIN libraries exist for various programming languages.
    • Cons: Dependent on CZUR providing TWAIN-compliant drivers for the specific scanner model(s) used in the project. Not all features of a scanner might be exposed via TWAIN.
    • Investigation: Some third-party software (e.g., Readiris PDF) mentions compatibility with CZUR scanners via TWAIN. This needs to be verified for the specific model(s) chosen for this project.
  3. "Mini-SDK" / Reverse Engineering:

    • Description: Analyze the scanner's communication by reverse-engineering its Windows DLLs (e.g., ETapp.dll mentioned in older community posts) or by sniffing USB communication protocols.
    • Pros: Might provide access to a wider range of features if successful.
    • Cons: Highly complex, error-prone, time-consuming, and likely OS-dependent (DLLs are Windows-specific). Resulting integration may be fragile and break with scanner software/firmware updates.
    • Investigation: Older (circa 2016) community posts discuss this possibility, highlighting its difficulty.
  4. CZUR Cloud API:

    • Description: Investigate if CZUR's cloud services (e.g., "CZUR Cloud") offer any developer-accessible API that could be used to interact with connected scanners.
    • Pros: Could offer a higher-level interface if available.
    • Cons: Availability and capabilities are unknown. May introduce internet dependency.
    • Investigation: Initial searches have not revealed a documented cloud API for developers.

Decision:

The primary approach for integrating with the CZUR scanner will be to investigate TWAIN compatibility once the specific target CZUR scanner model(s) for this project are identified.

If TWAIN proves to be a viable option for the selected model(s) (i.e., compliant drivers are available and provide necessary functionality), it will be the preferred integration method due to its standardized nature.

If TWAIN is not viable, the following fallback options will be evaluated in order of preference:

  1. CZUR Cloud API: Further investigation into undocumented or less obvious cloud interaction methods.
  2. "Mini-SDK" / Reverse Engineering: This will only be considered as a last resort due to its complexity and potential unreliability.

Consequences:

Next Steps:

  1. Action Item (Project Team): Identify and communicate the specific CZUR scanner model(s) that will be used for this project.
  2. Subtask 5.1 Continuation: Once the model(s) are known, resume research focusing on:
    • Official specifications for the identified model(s) regarding SDK, API, or TWAIN support.
    • Availability and quality of TWAIN drivers for these models.
    • Targeted community forum searches for experiences integrating with these specific models.
  3. Update this ADR with the model information and the results of the focused TWAIN investigation.