Skip to main content

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

Project description

Tesseract Decoder Logo

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.dev20260414023431-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.dev20260414023431-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.dev20260414023431-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.dev20260414023431-py313-none-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded Python 3.13macOS 11.0+ ARM64

tesseract_decoder-0.1.1.dev20260414023431-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.dev20260414023431-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.dev20260414023431-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.dev20260414023431-py312-none-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded Python 3.12macOS 11.0+ ARM64

tesseract_decoder-0.1.1.dev20260414023431-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.dev20260414023431-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.dev20260414023431-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.dev20260414023431-py311-none-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded Python 3.11macOS 11.0+ ARM64

tesseract_decoder-0.1.1.dev20260414023431-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.dev20260414023431-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.dev20260414023431-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.dev20260414023431-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.dev20260414023431-py313-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260414023431-py313-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cf5a126d2fe6ac86f86c5a76cbce16d6bd39b3927276de1a901422c5e8a31c85
MD5 d736958764cc66e8b85293beae310145
BLAKE2b-256 c9610d0bf299af2305d385581ecee01f45a81fbe4f6bcc6085bfec07f8b49e7b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260414023431-py313-none-manylinux_2_35_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e944ac7c53d015d96c47b49e06fd6b9b2cf649b9cac7dbcc95f7128e8b32c5de
MD5 58fb94c9d7b636e5999e884d65d86b52
BLAKE2b-256 47780a8dad2a521e9850451b78a794096517b06c0565a3e0bf844fc7c291c204

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260414023431-py313-none-manylinux_2_28_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 02365155861bc30afbeace53b088b93b76bb0db7b7a9964cbf14073d43adf1ba
MD5 5acfa489b1e4c0ced487942845cc3993
BLAKE2b-256 e065da91347fc37821b872eb0c88c3294320ac726fb26dbd66d0dda28691ff22

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260414023431-py313-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 32ddc83c9ba125d1f2a3e0f7ce02a822ddc4fee489ce7553c90aeb96aae58f6d
MD5 3df9dc2f96c76f096cdac6953c1e06c2
BLAKE2b-256 158016d0ab085bdeda89dba043c2c7f3af8da6d61abd0bb997c2f26014d4ae3e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260414023431-py312-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 28f46764f14351a77b6592b9a8ed6e431dcccaddad85671c2a6fed440e407ce8
MD5 47ee00b56c700bbe7083aa1e461e7163
BLAKE2b-256 a04b4d5db8ebc4672220a02206811f92b9213dc9bca3e216c888851f540d9b25

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260414023431-py312-none-manylinux_2_35_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 abedbdbde042f9448cc7076c3fba85074c45ed12a0fd6c01e09a9cb424cafce7
MD5 c8e834b7ee56278fb38377bc6fb46f34
BLAKE2b-256 27273be06eebb9b0101905b10840c154d8e1d1103f5920a1ac220455f319287a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260414023431-py312-none-manylinux_2_28_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fafce1d3eaa917db0eabbc68796f8b17843971861254c9d4e47b7a6e4df7fde8
MD5 7297537edf3e335cd59ece803192b635
BLAKE2b-256 5c527e853c8e94bb7a10a1d27b720920c90226dcd4a4473f00f81f4e6ca309e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260414023431-py312-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 271481abfe62c57eff83ba9c4fb19a7dac3d8098c5f8f45f18deec50164cb79a
MD5 f301d45418bee692f1f9b867fad4d18d
BLAKE2b-256 a4dbf0b68ee51ef76d096b74b535e7e4bdc0a1ee6dbc49a1941dbb227724f892

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260414023431-py311-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 32738fd5e7ebe2e11862f8a41aa0a35ef083f7c760698a1acb0182a543b0f358
MD5 f9d666a23e1e34373cacf32358046d99
BLAKE2b-256 1a779f3b848bcef55548282017387221f06cbc922af85dae3d9adf85a975e01e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260414023431-py311-none-manylinux_2_35_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 413761c702c1b375e51d3a844a19eab9480cce911fac5daaef3a5e5d11795963
MD5 52b13190e2e8c0fc60fcf0801e73b6b5
BLAKE2b-256 2039578ab90ac312f986a18edb90bc3568f213214126df4ad35676641dd01f3e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260414023431-py311-none-manylinux_2_28_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7b25a161d3b3d56b9a89a3017457cd82b9aebd4c0e1647bb3edaa43f5588b6b7
MD5 47ee54ce180a9ea553f42df23705b422
BLAKE2b-256 d3c2de755fbc5e16ece9904646f8e0ef18e5e726377130b2bb82982b6c809741

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260414023431-py311-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 664be28d0ada9d8cd512786ccffb5131a7aa610fd8930d5c5afabef9b81bf673
MD5 d382f34a13a1ade6711e726cba4f72b3
BLAKE2b-256 7727ff2980d2e13a3c4f0aa10867c992ae8a40ae54e017bb1b33ad7e1d468191

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260414023431-py310-none-manylinux_2_39_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c80194b5e746711b43af3128eb940800a84d06507e5ad77c52278836daf45bf4
MD5 2c2274190ea27a299450c75591ecf1a4
BLAKE2b-256 1c7761712a5a1a847b70b85947f425618ff4e2ff430c54bc7a1e4a61b495c555

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260414023431-py310-none-manylinux_2_35_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b4af3b86047ae7fc6fb6b3bea835c6b7f04604e32cc1eec158e396a376ca9152
MD5 70aec581d3e87080265915c2b8881c49
BLAKE2b-256 ce732b64dae5b791208f3cafca8b381460f917b9e2dd7906a384d4ee8d93eacd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260414023431-py310-none-manylinux_2_28_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 900338e1770b9947ccaf5aee9fe8fae712e4914ce448b75043ea7aec896a3ff1
MD5 7bc4660e8348a104ea93eac57399c459
BLAKE2b-256 af2602d56668678403fe2aacdc6daf6c7889a7281c678d1cf1fffe11cdef2e49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tesseract_decoder-0.1.1.dev20260414023431-py310-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c16cd483a1b1e16970f6c032138efc93c6af4c393cbc11233c975d8a7307075d
MD5 37b43201a5d9000a7973e829664c1ba0
BLAKE2b-256 dbea2b10bdebf3afd7050a8a395c7091c13b74a3d8c4f2e2517b0d2a47d04bc9

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