Skip to main content

A search-based decoder for quantum error correction (QEC).

Project description

Tesseract Decoder

A Search-Based Decoder for Quantum Error Correction.

Licensed under the Apache 2.0 open-source license C++

InstallationUsagePython InterfacePaperHelpCitationContact

Tesseract is a Most Likely Error decoder designed for Low Density Parity Check (LDPC) quantum error-correcting codes. It applies pruning heuristics and manifold orientation techniques during a search over the error subsets to identify the most likely error configuration consistent with the observed syndrome. Tesseract achieves significant speed improvements over traditional integer programming-based decoders while maintaining comparable accuracy at moderate physical error rates.

We tested the Tesseract decoder for:

  • Surface codes
  • Color codes
  • Bivariate-bicycle codes
  • Transversal CNOT protocols for surface codes

Features

  • A* search: deploys A* search while running a Dijkstra algorithm with early stop for high performance.
  • Stim and DEM Support: processes Stim circuit files and Detector Error Model (DEM) files with arbitrary error models. Zero-probability error instructions are automatically removed when a DEM is loaded.
  • Parallel Decoding: uses multithreading to accelerate the decoding process, making it suitable for large-scale simulations.
  • Efficient Beam Search: implements a beam search algorithm to minimize decoding cost and enhance efficiency. Sampling and Shot Range Processing: supports sampling shots from circuits. When a detection error model is provided without an accompanying circuit, Tesseract requires detection events from files using --in. The decoder can also process specific shot ranges for flexible experiment setups.
  • Detailed Statistics: provides comprehensive statistics output, including shot counts, error counts, and processing times.
  • Heuristics: includes flexible heuristic options: --beam, --det-penalty, --beam-climbing, --no-revisit-dets, --at-most-two-errors-per-detector, and --pqlimit to improve performance while maintaining a low logical error rate. To learn more about these options, use ./bazel-bin/src/tesseract --help
  • Visualization tool: open the viz directory in your browser to view decoding results. See viz/README.md for instructions on generating the visualization JSON.

Installation

Tesseract relies on the following external libraries:

  • argparse: For command-line argument parsing.
  • nlohmann/json: For JSON handling (used for statistics output).
  • Stim: For quantum circuit simulation and error model handling.

Build Instructions

Tesseract uses Bazel as its build system. To build the decoder:

bazel build src:all

Running Tests

Unit tests are executed with Bazel. Run the quick test suite using:

bazel test //src:all

By default the tests use reduced parameters and finish in under 30 seconds. To run a more exhaustive suite with additional shots and larger distances, set:

TESSERACT_LONG_TESTS=1 bazel test //src:all

Usage

The file tesseract_main.cc provides the main entry point for Tesseract Decoder. It can decode error events from Stim circuits, DEM files, and pre-existing detection event files.

Basic Usage:

./tesseract --circuit CIRCUIT_FILE.stim --sample-num-shots N --print-stats

To decode pre-generated detection events, provide the input file using --in SHOTS_FILE --in-format FORMAT.

Example with Advanced Options:

./tesseract \
        --pqlimit 1000000 \
        --no-revisit-dets \
        --det-order-seed 232852747 \
        --det-order-index --num-det-orders 24 \
        --circuit circuit_file.stim \
        --sample-seed 232856747 \
        --sample-num-shots 10000 \
        --threads 32 \
        --print-stats \
        --beam 23 --beam-climbing \
        --shot-range-begin 582 \
        --shot-range-end 583

Example Usage

Sampling Shots from a Circuit:

./tesseract --circuit surface_code.stim --sample-num-shots 1000 --out predictions.01 --out-format 01

Using a Detection Event File:

./tesseract --in events.01 --in-format 01 --dem surface_code.dem --out decoded.txt

Using a Detection Event File and Observable Flips:

./tesseract --in events.01 --in-format 01 --obs_in obs.01 --obs-in-format 01 --dem surface_code.dem --out decoded.txt

Tesseract supports reading and writing from all of Stim's standard output formats.

Performance Optimization

Here are some tips for improving performance:

  • Parallelism over shots: increase --threads to leverage multicore processors for faster decoding.
  • Beam Search: use --beam to control the trade-off between accuracy and speed. Smaller beam sizes result in faster decoding but potentially lower accuracy.
  • Beam Climbing: enable --beam-climbing for enhanced cost-based decoding.
  • At most two errors per detector: enable --at-most-two-errors-per-detector to improve performance.
  • Priority Queue limit: use --pqlimit to limit the size of the priority queue.

Output Formats

  • Observable flips output: predictions of logical errors.
  • DEM usage frequency output: if --dem-out is specified, outputs estimated error frequencies.
  • Statistics output: includes number of shots, errors, low confidence shots, and processing time.

Python Interface

Full Python wrapper documentation

This repository contains the C++ implementation of the Tesseract quantum error correction decoder, along with a Python wrapper. The Python wrapper/interface exposes the decoding algorithms and helper utilities, allowing Python users to leverage this high-performance decoding algorithm.

For installation:

pip install tesseract-decoder

The following example demonstrates how to create and use the Tesseract decoder using the Python interface.

from tesseract_decoder import tesseract
import stim
import numpy as np


# 1. Define a detector error model (DEM)
dem = stim.DetectorErrorModel("""
    error(0.1) D0 D1 L0
    error(0.2) D1 D2 L1
    detector(0, 0, 0) D0
    detector(1, 0, 0) D1
    detector(2, 0, 0) D2
""")

# 2. Create the decoder configuration
config = tesseract.TesseractConfig(dem=dem, det_beam=50)

# 3. Create a decoder instance
decoder = config.compile_decoder()

# 4. Simulate detector outcomes
syndrome = np.array([0, 1, 1], dtype=bool)

# 5a. Decode to observables
flipped_observables = decoder.decode(syndrome)
print(f"Flipped observables: {flipped_observables}")

# 5b. Alternatively, decode to errors
decoder.decode_to_errors(syndrome)
predicted_errors = decoder.predicted_errors_buffer
# Indices of predicted errors
print(f"Predicted errors indices: {predicted_errors}")
# Print properties of predicted errors
for i in predicted_errors:
    print(f"    {i}: {decoder.errors[i]}")

Using Tesseract with Sinter

Tesseract can be easily integrated into Sinter workflows. Sinter is a tool for running and organizing quantum error correction simulations.

Here's an example of how to use Tesseract as a decoder for multiple Sinter tasks:

import stim
import sinter
from tesseract_decoder import make_tesseract_sinter_decoders_dict, TesseractSinterDecoder
import tesseract_decoder

if __name__ == "__main__":  
    # Define a list of Sinter task(s) with different circuits/decoders.
    tasks = []
    # Depolarizing noise probability.
    p = 0.005
    # These are the sensible defaults given by make_tesseract_sinter_decoders_dict().
    # Note that `tesseract-short-beam` and `tesseract-long-beam` are the two sets of parameters used in the [Tesseract paper](https://arxiv.org/pdf/2503.10988).
    decoders = ['tesseract', 'tesseract-long-beam', 'tesseract-short-beam']
    decoder_dict = make_tesseract_sinter_decoders_dict()
    # You can also make your own custom Tesseract Decoder to-be-used with Sinter.
    decoders.append('custom-tesseract-decoder')
    decoder_dict['custom-tesseract-decoder'] = TesseractSinterDecoder(
        det_beam=10,
        beam_climbing=True,
        no_revisit_dets=True,
        merge_errors=True,
        pqlimit=1_000,
        num_det_orders=5,
        det_order_method=tesseract_decoder.utils.DetOrder.DetIndex,
        seed=2384753,
    )

    for distance in [3, 5, 7]:
        for decoder in decoders:
            circuit = stim.Circuit.generated(
                "surface_code:rotated_memory_x",
                distance=distance,
                rounds=3,
                after_clifford_depolarization=p
            )
            tasks.append(sinter.Task(
                circuit=circuit,
                decoder=decoder,
                json_metadata={"d": distance, "decoder": decoder},
            ))

    # Collect decoding outcomes per task from Sinter.
    results = sinter.collect(
        num_workers=8,
        tasks=tasks,
        max_shots=10_000,
        decoders=decoders,
        custom_decoders=decoder_dict,
        print_progress=True,
    )

    # Print samples as CSV data.
    print(sinter.CSV_HEADER)
    for sample in results:
        print(sample.to_csv_line())

should get something like:

    shots,    errors,  discards, seconds,decoder,strong_id,json_metadata,custom_counts  
    10000,        42,         0,   0.071,tesseract,1b3fce6286e438f38c00c8f6a5005947373515ab08e6446a7dd9ecdbef12d4cc,"{""d"":3,""decoder"":""tesseract""}",  
    10000,        49,         0,   0.546,custom-tesseract-decoder,7b082bec7541be858e239d7828a432e329cd448356bbdf051b8b8aa76c86625a,"{""d"":3,""decoder"":""custom-tesseract-decoder""}", 
    10000,        13,         0,    7.64,tesseract-long-beam,217a3542f56319924576658a6da7081ea2833f5167cf6d77fbc7071548e386a9,"{""d"":5,""decoder"":""tesseract-long-beam""}",  
    10000,        42,         0,   0.743,tesseract-short-beam,cf4a4b0ce0e4c7beec1171f58eddffe403ed7359db5016fca2e16174ea577057,"{""d"":3,""decoder"":""tesseract-short-beam""}",  
    10000,        34,         0,   0.924,tesseract-long-beam,8cfa0f2e4061629e13bc98fe213285dc00eb90f21bba36e08c76bcdf213a1c09,"{""d"":3,""decoder"":""tesseract-long-beam""}",  
    10000,        10,         0,   0.439,tesseract,8274ea5ffec15d6e71faed5ee1057cdd7e497cbaee4c6109784f8a74669d7f96,"{""d"":5,""decoder"":""tesseract""}",  
    10000,         8,         0,    3.93,custom-tesseract-decoder,8e4f5ab5dde00fec74127eea39ea52d5a98ae6ccfc277b5d9be450f78acc1c45,"{""d"":5,""decoder"":""custom-tesseract-decoder""}",  
    10000,        10,         0,    5.74,tesseract-short-beam,bf696535d62a25720c3a0c624ec5624002efe3f6cb0468963eee702efb48abc1,"{""d"":5,""decoder"":""tesseract-short-beam""}",  
    10000,         5,         0,    1.27,tesseract,3f94c61f1503844df6cf0d200b74ac01bfbc5e29e70cedbfc2faad67047e7887,"{""d"":7,""decoder"":""tesseract""}",  
    10000,         4,         0,    25.0,tesseract-long-beam,4d510f0acf511e24a833a93c956b683346696d8086866fadc73063fb09014c23,"{""d"":7,""decoder"":""tesseract-long-beam""}",  
    10000,         1,         0,    18.6,tesseract-short-beam,75782ce4593022fcedad4c73104711f05c9c635db92869531f78da336945b121,"{""d"":7,""decoder"":""tesseract-short-beam""}",  
    10000,         4,         0,    11.6,custom-tesseract-decoder,48f256a28fff47c58af7bffdf98fdee1d41a721751ee965c5d3c5712ac795dc8,"{""d"":7,""decoder"":""custom-tesseract-decoder""}",  

This example runs simulations for a repetition code with different distances [3, 5, 7] with different Tesseract default decoders.

Sinter can also be used at the command line. Here is an example of this using Tesseract:

sinter collect \
    --circuits "example_circuit.stim" \
    --decoders tesseract \
    --custom_decoders_module_function "tesseract_decoder:make_tesseract_sinter_decoders_dict" \
    --max_shots 100_000 \
    --max_errors 100
    --processes auto \
    --save_resume_filepath "stats.csv" \

Sinter efficiently manages the execution of these tasks, and Tesseract is used for decoding. For more usage examples, see the tests in src/py/tesseract_sinter_compat_test.py.

Good Starting Points for Tesseract Configurations:

The Tesseract paper recommends two setup for starting your exploration with tesseract:

(1) Long-beam setup:

tesseract_config = tesseract.TesseractConfig(
    dem=dem,
    pqlimit=1_000_000,
    det_beam=20,
    beam_climbing=True,
    det_orders=tesseract_decoder.utils.build_det_orders(
        dem=dem,
        num_det_orders=21,
        method=tesseract_decoder.utils.DetOrder.DetIndex,
    ),
    no_revisit_dets=True,
)

(2) Short-beam setup:

tesseract_config = tesseract.TesseractConfig(
    dem=dem,
    pqlimit=200_000,
    det_beam=15,
    beam_climbing=True,
    det_orders=tesseract_decoder.utils.build_det_orders(
        dem=dem,
        num_det_orders=16,
        method=tesseract_decoder.utils.DetOrder.DetIndex,
    ),
    no_revisit_dets=True,
)

For det_order, you can use two other options of DetIndex and DetCoordinate as well. These values balance decoding speed and accuracy across the benchmarks reported in the paper and can be adjusted for specific use cases.

Help

We are committed to providing a friendly, safe, and welcoming environment for all. Please read and respect our Code of Conduct.

Citation

When publishing articles or otherwise writing about Tesseract Decoder, please cite the following:

@misc{beni2025tesseractdecoder,
    title={Tesseract: A Search-Based Decoder for Quantum Error Correction},
    author = {Aghababaie Beni, Laleh and Higgott, Oscar and Shutty, Noah},
    year={2025},
    eprint={2503.10988},
    archivePrefix={arXiv},
    primaryClass={quant-ph},
    doi = {10.48550/arXiv.2503.10988},
    url={https://arxiv.org/abs/2503.10988},
}

Hacking on the Python module locally

To install your own build of Tesseract python module locally so that you can easily modify and hack on it, use something like the following:

bazel build --define TARGET_VERSION="py3.12.9" --define VERSION="v0.0.0dev"  :tesseract_decoder_wheel
pip uninstall --y tesseract_decoder
pip install bazel-bin/tesseract_decoder-0.0.0.dev0-py3.12.9-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
python testscript.py

Contact

For any questions or concerns not addressed here, please email tesseract-decoder-dev@google.com.

Disclaimer

Tesseract Decoder is not an officially supported Google product. This project is not eligible for the Google Open Source Software Vulnerability Rewards Program.

Copyright 2025 Google LLC.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

tesseract_decoder-0.1.1.dev20260325003302-py313-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded Python 3.13manylinux: glibc 2.39+ x86-64

tesseract_decoder-0.1.1.dev20260325003302-py313-none-manylinux_2_35_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded Python 3.13manylinux: glibc 2.35+ x86-64

tesseract_decoder-0.1.1.dev20260325003302-py313-none-manylinux_2_28_x86_64.manylinux2014_x86_64.whl (3.6 MB view details)

Uploaded Python 3.13manylinux: glibc 2.28+ x86-64

tesseract_decoder-0.1.1.dev20260325003302-py313-none-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded Python 3.13macOS 11.0+ ARM64

tesseract_decoder-0.1.1.dev20260325003302-py312-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded Python 3.12manylinux: glibc 2.39+ x86-64

tesseract_decoder-0.1.1.dev20260325003302-py312-none-manylinux_2_35_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded Python 3.12manylinux: glibc 2.35+ x86-64

tesseract_decoder-0.1.1.dev20260325003302-py312-none-manylinux_2_28_x86_64.manylinux2014_x86_64.whl (3.6 MB view details)

Uploaded Python 3.12manylinux: glibc 2.28+ x86-64

tesseract_decoder-0.1.1.dev20260325003302-py312-none-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded Python 3.12macOS 11.0+ ARM64

tesseract_decoder-0.1.1.dev20260325003302-py311-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded Python 3.11manylinux: glibc 2.39+ x86-64

tesseract_decoder-0.1.1.dev20260325003302-py311-none-manylinux_2_35_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded Python 3.11manylinux: glibc 2.35+ x86-64

tesseract_decoder-0.1.1.dev20260325003302-py311-none-manylinux_2_28_x86_64.manylinux2014_x86_64.whl (3.6 MB view details)

Uploaded Python 3.11manylinux: glibc 2.28+ x86-64

tesseract_decoder-0.1.1.dev20260325003302-py311-none-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded Python 3.11macOS 11.0+ ARM64

tesseract_decoder-0.1.1.dev20260325003302-py310-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl (3.2 MB view details)

Uploaded Python 3.10manylinux: glibc 2.39+ x86-64

tesseract_decoder-0.1.1.dev20260325003302-py310-none-manylinux_2_35_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded Python 3.10manylinux: glibc 2.35+ x86-64

tesseract_decoder-0.1.1.dev20260325003302-py310-none-manylinux_2_28_x86_64.manylinux2014_x86_64.whl (3.6 MB view details)

Uploaded Python 3.10manylinux: glibc 2.28+ x86-64

tesseract_decoder-0.1.1.dev20260325003302-py310-none-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded Python 3.10macOS 11.0+ ARM64

File details

Details for the file tesseract_decoder-0.1.1.dev20260325003302-py313-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260325003302-py313-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 13a5dc050ffcbe3a58f9525742838aac6b508f164856b779f63502259d544e4a
MD5 3d8a63a3ad70f5904de281c1f572e6a7
BLAKE2b-256 563541484f4126e474d88f30a288c3f02d5835df6299a69bc23c852b5483c797

See more details on using hashes here.

File details

Details for the file tesseract_decoder-0.1.1.dev20260325003302-py313-none-manylinux_2_35_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260325003302-py313-none-manylinux_2_35_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e6ad289546420007f445b6c3697c6bbd86486afeeef1b0c0703db1cff386900b
MD5 f2d600fc5d517c0661fee397ba4eefb0
BLAKE2b-256 fc6caca8ca65af4ae5a85c33da8c24717f6cf5081a777611ce24c961d1944919

See more details on using hashes here.

File details

Details for the file tesseract_decoder-0.1.1.dev20260325003302-py313-none-manylinux_2_28_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260325003302-py313-none-manylinux_2_28_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fbfc78e8dd97d6065a6d3950f1f76e4264b14e82c7c650735ed12135d15defa8
MD5 dd3c583d11ab6a255f00abdba4de1438
BLAKE2b-256 0bf353257b9a3ee0058a56e5cedde47eb048a0093657e7477474286e49a4701a

See more details on using hashes here.

File details

Details for the file tesseract_decoder-0.1.1.dev20260325003302-py313-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260325003302-py313-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 587631ea0928449a127b60e370cccff57d9cc7770086057f66d29264bac7668a
MD5 a897f24ff7949047ce2bd6ad739c3e3c
BLAKE2b-256 970b46a4f6680103bc8d588b0905f9e8b7c64deb9c3d6afd8053e932e0ef0b10

See more details on using hashes here.

File details

Details for the file tesseract_decoder-0.1.1.dev20260325003302-py312-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260325003302-py312-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ec26554123b88f06243a41256f4b72563208ad6430e10e58f945351a49f52508
MD5 65cb3dc6bfbfff1f3f42be3122b6a205
BLAKE2b-256 4dc38c9e639eedd2227a5d04a523dd4447264ca74607ef563626ade4219b684f

See more details on using hashes here.

File details

Details for the file tesseract_decoder-0.1.1.dev20260325003302-py312-none-manylinux_2_35_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260325003302-py312-none-manylinux_2_35_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d6b63e8e1ee9d1a380b88cee7759d70c6a3b290745bdceb02328b71487c76bf4
MD5 906a7a5e9adc508a9931c5701faa40a9
BLAKE2b-256 c3fee867a58232ed580070865a0fd3bf1ebd2bc3a2f93d24a30117c868d45216

See more details on using hashes here.

File details

Details for the file tesseract_decoder-0.1.1.dev20260325003302-py312-none-manylinux_2_28_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260325003302-py312-none-manylinux_2_28_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1c56ed3a4f8409e28bca70a5af3ea5817fc928e7d98c03a584a57f6f0b764205
MD5 8acd75243080861fd19b52abcf3068dd
BLAKE2b-256 a12d3f67bafffb4ec1a05c5aac3ed1b9e755cc2063b5955d72b5bbd12e0bee85

See more details on using hashes here.

File details

Details for the file tesseract_decoder-0.1.1.dev20260325003302-py312-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260325003302-py312-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 89fadfc3cc0a13d1397cb95099c1b43d8c5a7cb1c62d928d73c82bb0f81962b0
MD5 b7d1933949fe0fc97fe5c01bd626feca
BLAKE2b-256 336ad630fabbaf97214b87b2d6726fcffcfc315c9928e5b0d1402998aa363a2a

See more details on using hashes here.

File details

Details for the file tesseract_decoder-0.1.1.dev20260325003302-py311-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260325003302-py311-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a603178ac998a668a69bb119d8a912643f2fecb27c426409f27f9f323ff7075e
MD5 5be089ae4e1edeeccae3f34e3a53796f
BLAKE2b-256 b589edfb77524a741e5c9ac8bf7b019b92578ef1d6743c482a6e0cceaf8d45b3

See more details on using hashes here.

File details

Details for the file tesseract_decoder-0.1.1.dev20260325003302-py311-none-manylinux_2_35_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260325003302-py311-none-manylinux_2_35_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bbac5d1e065e865e5ae32af0be015a20f82072fd08759a7a07d45a81cb26fcf4
MD5 7df7b8eaca9e75013e33e925c5f3f928
BLAKE2b-256 97af3e5578bbf3947e420e4fc80f1c7da0bbd6842a67748e011197fed73466e2

See more details on using hashes here.

File details

Details for the file tesseract_decoder-0.1.1.dev20260325003302-py311-none-manylinux_2_28_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260325003302-py311-none-manylinux_2_28_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3042eb755e45fae292ebfaa147d3d008966a4c47a45a1448444834da111597e9
MD5 05e36ca4fedfa67aaf4c6fd4d83f8a6a
BLAKE2b-256 8e7c50fd18af3d735db335dfbf214f5b9ea861fad6d38b9df1012964bfca423f

See more details on using hashes here.

File details

Details for the file tesseract_decoder-0.1.1.dev20260325003302-py311-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260325003302-py311-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8ccc5d7d33a993aa6d204e709ad70c199ee0cd48680a6f267b224bb9453d7376
MD5 eee296781b0f4170f117b6ce7d8dfe8d
BLAKE2b-256 a2c1c8220fbe29157c197da964faf84632382989ebdcd9dfb178ca2b4bcb5097

See more details on using hashes here.

File details

Details for the file tesseract_decoder-0.1.1.dev20260325003302-py310-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260325003302-py310-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 98f7c50d94b869745868cb0319ecf0cd6758b9dc890f0f7f1bbe597dc88378df
MD5 3f65a97ed22f51375a03322932d314b8
BLAKE2b-256 ff69bef0e626360bafaaaebfae4b3b8db59a99ad9ad80d4fd41403597b26e171

See more details on using hashes here.

File details

Details for the file tesseract_decoder-0.1.1.dev20260325003302-py310-none-manylinux_2_35_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260325003302-py310-none-manylinux_2_35_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ff89913296a1e3b22b81500efbe4b6aa42a57b3e49cb53af9d83759499f48f24
MD5 f40d62ce26528de9c7817b0df815c9dc
BLAKE2b-256 0f5dac5d13b1728c90232028bdef5d91c2c4d44dc77b4bd11a32790f9c692fe5

See more details on using hashes here.

File details

Details for the file tesseract_decoder-0.1.1.dev20260325003302-py310-none-manylinux_2_28_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260325003302-py310-none-manylinux_2_28_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6a70772b85f9813f5ea35db8493b4470cf03a7ce88bd1a1b61c6bad956cd0743
MD5 4a682ea3fee2fa75a63e510fb3724ebe
BLAKE2b-256 e52f6e58fcea51268ec23a27de48701faca8d1fdfaaecfb28f8e94b5a9d7cd10

See more details on using hashes here.

File details

Details for the file tesseract_decoder-0.1.1.dev20260325003302-py310-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260325003302-py310-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 15bb6cedf88a9a6ebe6ff0015bab3512cea9ae1637642f79e35b289107eacfd3
MD5 e16aaca8d6a6735cc3c7d57d9a96bc29
BLAKE2b-256 8714a83ac8520c4364b0d79b23483126b848bcdaa61b5503b32d4dc08a47596e

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