Skip to main content

cnrocr

PyPI Python Downloads Platform License

Container number detection and recognition — ISO 6346 end-to-end, ONNX only.

A region detector locates the number, ISO type code, owner code and serial on the container; an OCR recognizer reads each crop with a spec-constrained beam search. Fragments split across panels are merged back into a single number and validated against the ISO 6346 check digit.

No PyTorch required. The runtime is onnxruntime + numpy + pillow.


Install

pip install cnrocr             # CPU
pip install "cnrocr[gpu]"      # NVIDIA CUDA — see the note below
pip install "cnrocr[server]"   # local REST API + dashboard

Model weights (~113 MB) are not bundled in the wheel. They are downloaded on first use and cached locally:

cnrocr models download       # optional — happens automatically otherwise

About the GPU extra

onnxruntime-gpu does not carry the CUDA runtime, so cnrocr[gpu] on its own is often not enough. If the runtime is missing or a different major version, onnxruntime prints an error, keeps going on the CPU, and the only symptom is that inference is slow. Two things to know:

  • Remove the CPU build first. onnxruntime and onnxruntime-gpu unpack into the same directory and cannot both own it: pip uninstall -y onnxruntime && pip install "cnrocr[gpu]"
  • Check what you actually got. cnrocr check prints the providers in use, and --device cuda now warns when it lands on the CPU anyway.

Python API

from cnrocr import ContainerOCR

ocr = ContainerOCR()                      # weights resolved from cache
result = ocr.read("gate_cam.jpg")

for c in result.containers:
    print(c.number, c.iso_type, c.confidence, c.needs_review)
# TGHU8913889 22G1 0.9997 False

Multiple images

results = ocr.read_many(["a.jpg", "b.jpg", "c.jpg"], batch_size=8)

read_many treats the images as unrelated — N images in, N results out.

Multi-view fusion

When several cameras photograph the same container, fuse them into one answer instead of voting on strings:

mv = ocr.read_multiview(["cam1.jpg", "cam2.jpg", "cam3.jpg"])
print(mv.number, mv.agreement, mv.mode)

Beam-search candidates from every view are summed in log space, so a character that one view is unsure about can be settled by the others. If the views appear to be looking at different containers, they are not fused — mv.consensus becomes False rather than producing a confident wrong answer.

Review triage

A check digit alone is not enough. The constrained decoder only emits spec-conforming candidates, so when the true string is absent from the beam it will confidently output a plausible wrong number that still passes the check digit. needs_review combines the check digit, the spec flag and a confidence floor:

if c.needs_review:
    print(c.review_reason)     # "low confidence (0.612 < 0.7)"

Owner code registry (optional)

Real-world owner codes are registered with the BIC. Supplying the list filters out invented codes that would otherwise pass both the format check and the check digit:

from cnrocr import OwnerCodeRegistry
ocr = ContainerOCR(registry=OwnerCodeRegistry.from_file("bic_codes.txt"))

The list is not shipped with this package.


Command line

cnrocr read gate_cam.jpg
cnrocr read *.jpg --json --device cuda
cnrocr multiview cam1.jpg cam2.jpg cam3.jpg
cnrocr models status
cnrocr check                    # diagnose install, providers, cache

--fail-on-review makes the process exit with code 2 when any result needs human review, which is convenient in batch pipelines.


Local server

A REST API and a browser dashboard, both served from your own machine. Images never leave it.

pip install "cnrocr[server]"
cnrocr server start                  # http://127.0.0.1:8000
cnrocr server start --daemon         # background; `server stop` to end it

Open the address for the dashboard, or /docs for the interactive API. The models are loaded once at startup and shared by every request.

curl -X POST -F "file=@gate_cam.jpg" http://127.0.0.1:8000/api/read
{
  "detection_id": 41,
  "device": "cuda",
  "containers": [{"number": "TGHU8913889", "iso_type": "22G1",
                  "confidence": 0.9997, "needs_review": false}],
  "elapsed_ms": 38.4
}
Endpoint Purpose
POST /api/read One image (multipart). /api/read/base64, /api/read/binary take other shapes
POST /api/read/batch Several images in one call
POST /api/multiview Several views of the same container, fused into one answer
GET /api/review The queue of results a human should look at
POST /api/review/{id} Record the human's verdict; corrections are check-digit validated
GET /api/history Past detections, with filters and CSV/JSON export
GET /api/health Liveness, version, and which device is actually in use
GET /api/stats Counts, review rate, remaining quota

Review queue

Results below --review-confidence (default 0.7) are flagged and collected for a human instead of being silently trusted. In practice that is a small fraction of traffic — on our validation set every misread scored below 0.7 while correct reads sat near 1.0, so the threshold catches the errors and sends only a few percent of good reads along with them.

The dashboard shows each flagged result next to its photo, with the number in an editable field. Confirming stores the corrected value, which is the only record of which misreadings repeat.

Access from a phone

The dashboard is built for a phone first: the camera button photographs a container and uploads it directly, which is enough to work the queue at the gate.

cnrocr server start --host 0.0.0.0 --token "$(python -c 'import secrets;print(secrets.token_urlsafe(24))')"

Binding to 0.0.0.0 exposes the server to everyone who can reach the host, so set a token when you do. The server says so at startup if you forget; it does not refuse to start, because a closed network is a legitimate setup.

Configuration

Flags, a YAML file, or the environment — later wins, and flags win over all.

cnrocr server start --config server.yaml --port 9000 --device cuda
server:
  host: 127.0.0.1
  port: 8000
  api_token: ""            # required in practice once host is not loopback
models:
  device: auto             # auto | cpu | cuda
  workers: 4
  review_confidence: 0.7
storage:
  save_images: true        # the review screen needs the photo
  max_history: 5000

Every setting also reads from CNROCR_SERVER_<NAME>. An unknown key in the YAML is an error rather than a silent no-op — a typo in api_token must not quietly leave authentication off.

Telling something else

The API is pull-only, which is no use to a barrier or a terminal operating system. Point the server at a URL and every result is POSTed there as it happens:

cnrocr server start --webhook https://gate.internal/cnrocr \
                    --webhook-token "$(openssl rand -base64 24)"

--webhook-token is sent to the receiver as a bearer token so it can tell the posts came from here. It is not --token, which guards this server.

Results go out for anything that passes through the server — the dashboard, cnrocr server read, or your own POST /api/read. Plain cnrocr read runs in its own process and never reaches the server, so it sends nothing.

{"event": "read", "server": "cnrocr", "ts": "...", "data": { ... }}

event is read for a recognition and review for a human verdict, so a receiver can supersede what it was told when the read first came in. Delivery never blocks or fails a request: a detection that was stored succeeded whether or not anyone could be told. Failures are retried a couple of times, then counted in /api/stats — a webhook that stopped working is otherwise invisible. If deliveries must not be lost, poll /api/history and treat the webhook as a latency improvement rather than a transport.

webhook:
  webhook_url: "https://gate.internal/cnrocr"
  webhook_token: ""          # sent to the receiver as a Bearer token
  webhook_events: [read, review]
  webhook_retries: 2

Starting at boot

A gate PC reboots. cnrocr server install prints a systemd unit, a launchd plist or a schtasks command for this machine:

cnrocr server install                    # print it
cnrocr server install --write /tmp       # write it to a file

It generates the unit and the one command that installs it; it does not install anything itself, because that needs administrator rights and you should read both before running either. It also names what will otherwise break after the next reboot — a licence key that only exists in your shell, a token that a scheduled task cannot carry.

Storage

Photographs are kept for the review screen and capped separately from the history, because a row costs a few hundred bytes and the picture beside it costs a few hundred kilobytes:

storage:
  save_images: true
  max_history: 5000        # rows
  max_images: 2000         # photographs; they age out first

Deleting or trimming a detection deletes its photographs, and any left behind by an earlier version are swept at startup.

cnrocr license --set <key>  # register a licence (or paste it in the dashboard)
cnrocr server status        # is it up, on what device, since when
cnrocr server list          # every instance this machine knows about
cnrocr server logs -f       # follow
cnrocr server read img.jpg  # send a file to a running instance — not the same
                            # as `cnrocr read`, which never touches the server
cnrocr server install       # a unit file that starts it at boot
cnrocr server stop

What this is not

It reads container numbers. It does not watch cameras, and it does not decide whether to open anything. There is no RTSP input, no booking lookup and no barrier control — a gate needs the truck's plate and a booking reference as well as the container number, and those decisions belong to a terminal operating system. Use --webhook to hand results to whatever makes them.


Licensing

Licences are priced by daily volume. A licence raises the daily limit to the tier you are on; the counter is per image, not per call, and resets at 00:00 UTC. Tiers start at 100 images a day and run to unlimited — email pashidl.lab@gmail.com for current pricing, or see the project page.

cnrocr license      # which tier, and today's usage

Multi-view counts per view. read_multiview with three photographs of one container spends three images, not one. Three hundred containers photographed from three angles is 900 images a day, not 300 — worth checking against the tier before choosing it.

The library, the CLI and the server all draw on the same daily budget. When it runs out the process exits with code 3, and the server answers 429 rather than 500 — the request was fine and so is the server. Nothing is processed on a call that would exceed the allowance, so a refused call costs none of it.

Evaluation limit

Without a licence, cnrocr processes 30 images per day.

Evaluating it properly

Thirty images is enough to see whether it reads your photographs. It is not enough to wire up the API, try the batch and base64 shapes, and put any load through it — that is an afternoon's work and rather more than thirty images.

Email pashidl.lab@gmail.com for a free 14-day evaluation key with no daily limit. Say who you are and what you are building; there is nothing to negotiate and no card involved. When it expires the key simply stops applying and you are back to 30 images per day — nothing breaks, nothing to uninstall.

The same address issues full licences. A key looks like this:

# Windows
setx CNROCR_LICENSE "eyJlbWFpbCI6..."

# macOS / Linux
export CNROCR_LICENSE='eyJlbWFpbCI6...'

The key may also be saved to a file named license in the cache directory (cnrocr models path shows where). Verify with cnrocr check, which also warns for thirty days before a licence expires — a renewal should not be discovered by a server that stopped working.


Weights and caching

Platform Location
Cache (Windows) %LOCALAPPDATA%\cnrocr\Cache\models\<set>
Cache (macOS) ~/Library/Caches/cnrocr/models/<set>
Cache (Linux) ~/.cache/cnrocr/models/<set>

Every file is verified against a SHA-256 recorded in the wheel. Released assets are immutable: a new model set ships under a new tag and a new library version, so upgrading never invalidates an existing install.

The weights are encrypted and are decrypted into memory when a session is built. The cache holds ciphertext only; no plaintext model is written to disk.

Environment overrides:

Variable Effect
CNROCR_MODEL_DIR Use this directory as-is; never download
CNROCR_CACHE_DIR Relocate the cache root
CNROCR_WEIGHTS_BASE_URL Fetch weights from somewhere else (file:// works)

License

Proprietary. Evaluation and non-commercial research use only — see LICENSE. Contact the copyright holder for commercial licensing.

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.

cnrocr-0.6.11-cp313-cp313-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.13Windows x86-64

cnrocr-0.6.11-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (15.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cnrocr-0.6.11-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (15.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

cnrocr-0.6.11-cp313-cp313-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cnrocr-0.6.11-cp313-cp313-macosx_10_13_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

cnrocr-0.6.11-cp312-cp312-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.12Windows x86-64

cnrocr-0.6.11-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (15.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cnrocr-0.6.11-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (15.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

cnrocr-0.6.11-cp312-cp312-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cnrocr-0.6.11-cp312-cp312-macosx_10_13_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

cnrocr-0.6.11-cp311-cp311-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.11Windows x86-64

cnrocr-0.6.11-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (15.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cnrocr-0.6.11-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (15.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

cnrocr-0.6.11-cp311-cp311-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cnrocr-0.6.11-cp311-cp311-macosx_10_9_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

cnrocr-0.6.11-cp310-cp310-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.10Windows x86-64

cnrocr-0.6.11-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (15.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cnrocr-0.6.11-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (14.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

cnrocr-0.6.11-cp310-cp310-macosx_11_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cnrocr-0.6.11-cp310-cp310-macosx_10_9_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file cnrocr-0.6.11-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: cnrocr-0.6.11-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.13

File hashes

Hashes for cnrocr-0.6.11-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 54cd3c35cb8e208444ba5566ddb9cc2752f58ce16731e529784562f7d98dbbd8
MD5 a93d098948aea2f2e42174a17d770771
BLAKE2b-256 d5d6607695e01a82923a7fe61812e35be4444f86bef496fd8f05e8b6d37d61cc

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cnrocr-0.6.11-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 895878048373706ac0fa4ace58d8fbd58cfc0f885c7685a46035192a83778b85
MD5 a2d923f209573988b0d338de49ba367a
BLAKE2b-256 469a5207da00c59eb1dc3f817ebf1b93a58b7e81b66e5c3fd30ff47769cfba68

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cnrocr-0.6.11-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0be6e2c54de9a79b1a19f8d7464fb4323b9358aaac8148495a773f5380e4a375
MD5 23dfd497fcfd91915704b1336329920c
BLAKE2b-256 1e3c6cfbc76861223bed5fb4b47d6e234ac57d65eb4b47c1c8b5ccdfb554e772

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cnrocr-0.6.11-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 863119f654d486acdce173728b2916422e05eaea01d8cfa0f3fddb645bbc5c4b
MD5 e007636fdf4368c65f2218ba0b67646d
BLAKE2b-256 d413e619dd3d7be107c843e249f510787c86c33f076da07711c041ad4be912c4

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for cnrocr-0.6.11-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 77b4dd6988ec10e25e14f10af1b724b46c8193faa331463ca3e9f22da8951cf8
MD5 223f8e4d968743bc56a9767a406b3397
BLAKE2b-256 4711e0b8e231df26c9fe5e535c1f1f0f35d57ced0c8f49414e8460476c4b1350

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cnrocr-0.6.11-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.13

File hashes

Hashes for cnrocr-0.6.11-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6da083ca22114e51baaf6b4351e35f19d164f53ee9af8a229811a298bd1abf4a
MD5 d5d1add2e1819be59892260651bbab83
BLAKE2b-256 fc38c9f02fcd78dc05d9b014ed57efdc2dab9f686f2d7fe3e07d79418357e00d

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cnrocr-0.6.11-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f4f810add269388c2a050d872297a48908d2b4eaf56ca19deaffdf9e8d2e4c66
MD5 ba0a9b0794274afe2477998284f6831d
BLAKE2b-256 c0085979e9322d9ffd868097474874e588a1b42e853fc0626224dd7f4b26d20d

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cnrocr-0.6.11-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 986f54c2aabfad5531e518a3a19b99a37fd01aac4263c7795eeaf4a4ce442f5f
MD5 8defece01ed982d366859413be3f65ef
BLAKE2b-256 9ccb3d7f9e0964c881a6153723f545dcd4bd1197de5596542db02a169e7a5c3a

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cnrocr-0.6.11-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 911523f877f4c98762d5e7ded8d8af5eea123a70f2125bdb3329e2bc581f7b7d
MD5 c87d431aff73be506ca0c57e4b8480fa
BLAKE2b-256 a7b025df4df873aed450ced2e9659fb74f0fbe8b37da057691a155f2db37b4c6

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for cnrocr-0.6.11-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 746739379c507dbc4504d6d65dc809f8842f5b352529c1d855577f5c741a91c4
MD5 848dee3df6b4142b04a6afa16fc26b35
BLAKE2b-256 e85a06422c976c904500c9447a50e206fd43ad3b2ad968bf06d7032090d63160

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cnrocr-0.6.11-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.13

File hashes

Hashes for cnrocr-0.6.11-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 512ae1b8825235cc5cc37249fd558d2350637449045e3451e2d068fb434adf35
MD5 48daae93279b885a4e28f95cb65a5b12
BLAKE2b-256 fa610240db704c92de91b181cae132075f0e57727e63d8d56670f0e3bb9e5ed1

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cnrocr-0.6.11-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9a56f839da1eaef67ee271c8e9ce7a23a2130ddf24cc19261756058ee860f1f1
MD5 d38553a708a04ac7f862138a45ff9669
BLAKE2b-256 8d84274e93101ae104d37ebe0e3cc5e03f59ef0a239f89ac520d3686816bc929

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cnrocr-0.6.11-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 172d12dc3cfd43d0551e57673761f4cbc6d93cc69d1accc874ab6297ad9dc1ce
MD5 08725e19bc9f54f1b748af97f808f5e8
BLAKE2b-256 7801b780726c88e111b7771a246ea69c935d400ce7c643a25878b50af4ae73b4

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cnrocr-0.6.11-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4e0d996a7746cba734b9146598d06e7a876e592663d6a778a891701eef796d3c
MD5 58a0842d89e30be2d21223eb221082b3
BLAKE2b-256 e6884ca75ab6895ca1a6adf83688b757ffa556ccfb2da710bf489ce2ac626828

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cnrocr-0.6.11-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0ab61cf7b784511a37f74af9c10420fe73832bcd64fa8c3c9557ed7b248ad3de
MD5 f11f03bdcdfdc99aa260c140e4ab7714
BLAKE2b-256 d7fff6e1b9cc4c4b7735570891ebda4d15a8500c3749d0d1ab5e4a43bd5757bb

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cnrocr-0.6.11-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.13

File hashes

Hashes for cnrocr-0.6.11-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 93db29ed231d2f92ddd2cfc57a89ff4d23a712a42cfa621f8e4680440e7bc0f9
MD5 97fa8b243d45caa52ad77c8e618fd23e
BLAKE2b-256 fc92498f80ff12a16a69a8a9f940346554720ddc28be8c798111e310570a3183

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cnrocr-0.6.11-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 71e804359198e0359da60cd2f285fc5aa59fc70235835f9f3a821183e2b6d98b
MD5 1da353230bf3709f2bc5e98f882a00d7
BLAKE2b-256 3ba63f2cd4ecbfb60d336b361968c748503ab2b22f22d0e45232b54357f4d33f

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cnrocr-0.6.11-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cb2b2193a50cf65da8d179a224f4166e40d756987d383c950fcd91ca9019191f
MD5 e4fa811554d8a1385b4cefce629bea69
BLAKE2b-256 a0c617e277680e02c8dfe8d27a34213b2b5b57ad3e320ab529342a536965d903

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cnrocr-0.6.11-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 58743091b62182df9b4bcaf5f3889869970752e4e8e460e4fa4b42c57562f2af
MD5 9e3928b13b281384f5403d327199ee91
BLAKE2b-256 108886613bbd3910fca539b257f11ff311d612c40dd846ec4291610e627cab57

See more details on using hashes here.

File details

Details for the file cnrocr-0.6.11-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cnrocr-0.6.11-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0e769c30ee6bcc8fd0964912d329747ccbd217b2da4cada6a128231f47a6f5b9
MD5 b6efe5172d7b677371c500f753ce958e
BLAKE2b-256 ca54fe2d7cb38f1a711786f77f2bfab66f0051baf9f2a5eeb1d4ea94aba7161a

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.6.11 This release

20 files

0.6.10

1 file

0.6.9

1 file

0.6.8

1 file

0.6.7

20 files

0.6.6

20 files

0.6.5

20 files

0.6.4

20 files

0.6.3

20 files

0.6.2

20 files

0.6.1

20 files

0.6.0

20 files

0.5.10

20 files

0.5.9

20 files

0.5.8

20 files

0.5.7

20 files

0.5.6

20 files

0.5.5

20 files

0.5.4

20 files

0.5.3

20 files

0.5.2

20 files

0.5.1

20 files

0.5.0

20 files

0.4.2

20 files

0.4.1

20 files

0.4.0

20 files

0.3.4

16 files

0.3.3

16 files

0.3.2

16 files

0.3.1

16 files

0.3.0

16 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page