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 vislab2026@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 vislab2026@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.5.3-cp313-cp313-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.13Windows x86-64

cnrocr-0.5.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (12.1 MB view details)

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

cnrocr-0.5.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (11.8 MB view details)

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

cnrocr-0.5.3-cp313-cp313-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cnrocr-0.5.3-cp313-cp313-macosx_10_13_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

cnrocr-0.5.3-cp312-cp312-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.12Windows x86-64

cnrocr-0.5.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (12.3 MB view details)

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

cnrocr-0.5.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (12.0 MB view details)

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

cnrocr-0.5.3-cp312-cp312-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cnrocr-0.5.3-cp312-cp312-macosx_10_13_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

cnrocr-0.5.3-cp311-cp311-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.11Windows x86-64

cnrocr-0.5.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (12.3 MB view details)

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

cnrocr-0.5.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (12.1 MB view details)

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

cnrocr-0.5.3-cp311-cp311-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cnrocr-0.5.3-cp311-cp311-macosx_10_9_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

cnrocr-0.5.3-cp310-cp310-win_amd64.whl (1.6 MB view details)

Uploaded CPython 3.10Windows x86-64

cnrocr-0.5.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (11.6 MB view details)

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

cnrocr-0.5.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (11.4 MB view details)

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

cnrocr-0.5.3-cp310-cp310-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cnrocr-0.5.3-cp310-cp310-macosx_10_9_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: cnrocr-0.5.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.6 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.5.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 de72b3865214f8a7f9ba05baab2f12661bf71a3aab6cd41e7b58639247fc22e2
MD5 28aaf5d71582801c95f7180268e61ce9
BLAKE2b-256 fb1ec40745f401bea13f9cb3745121c9c33bb434acc0410bdd5c8909f19d48bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f020bc0819b85c5b0811524889c32f3610c5be7dff9c0a98cc80279da85b63ff
MD5 e1bd4bb796d6f7c61c0089c312402e5c
BLAKE2b-256 5947593ada16737c2affa2b676a56e42b227051258e8e5f60c907e0fdeb82895

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f9706104ffd3b23d6d0f3629ef366ef7d522a452cf16111df4b47f2572291b4e
MD5 56864064fd17cd73ed2eecad674fb2ef
BLAKE2b-256 d77cedc3e02b5a012223734ccec2768079a2694c63d1e95dcca93d0b778196d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1d266cba513ac50172595a82382a6e25d1062ae65245dbe4485ed9714b0dbb11
MD5 cf84c4efd7288b31a070bc6004aee88e
BLAKE2b-256 706d432708f3499d91a802c3914025126589d47607ae3f9d6cf5ffcd5ca950ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.3-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 8683e0515ecdd70d8e31703ecd94c22776be4d6ebde4562a02b78b53777ca471
MD5 52a1ca8b9cfab7c951ab0bdd630a377e
BLAKE2b-256 50e7e4b6817bd9c4cc17c304043fb7f52a25d4dce95ac89ba28a399e0e942847

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cnrocr-0.5.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.6 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.5.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9be677b6b35072bf943a43e71ca921af369e26a371cb9c2b5bd4f50068393e66
MD5 1f34f141671e8ba72804e19e031d86af
BLAKE2b-256 dbc410061446c9bc2a6af54299eeed0a307331feda03d9d01e69489a4cb378c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 77fd2571edd6fcc89a9d1f822b06c90e1a753c7cdcfc483c08986b82015b80f1
MD5 118ae337d14b678b33f00fba1f6931e5
BLAKE2b-256 9ea700c14cb859c22737ff888d42101607a3015bf0a4e034032b3232dc682c2d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c3e48e6460e356df0d2afda26a915cd0087192b6be42d82ea1513864784cbfa0
MD5 86546e4bcd8af97bdd02291d9913caaa
BLAKE2b-256 b672043e6be736b065e5be0a34052b8f0209195d7a742185a560cf27d8ebdcd1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4aaa112375a5b90cb64de3e7c70749220d423cc57dc5aa86cd3c726cbee6ae23
MD5 e48ea8d503885f77b0998692d8e6a2e6
BLAKE2b-256 12fb9e6c1159de3f437d5411b4d0c1d07c776ae6d043eb0fa21fa08d550ac890

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.3-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 a584daaf93dc40d36c2c4f854979b0eb14c4a5f07159bd0cbec98f7a71ea5ee2
MD5 6ba57799d15bcbdcc407fd5844b29044
BLAKE2b-256 aec6fbfd1efddfbb1858e612411a7560977fec52f39adbba91867a17a5cfbeb7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cnrocr-0.5.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.6 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.5.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b23d75a3c1b04b45cd6092dc8355f09f61ceabe3f3438199cc50f4a5ca71bef9
MD5 5147bfb96e20b3d131d3fa831d328bf4
BLAKE2b-256 9460d51f87a14223c72c4a1744e04d489ed1e49baa1814e6c078a8a514ecf414

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 db9fb53a32d2d21c6e01146708ab896804a17f1caddc40b764d320e1eee283d8
MD5 2b62ea189dacf6596f8c72ee39f3e9b8
BLAKE2b-256 ed1e1630eabdf3d261095c3213398a45d23bab61a748a9cde8f851192322744f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f803271e19c72b881b95af2b011468ab6dd30d192cc8d449098e00e72e77c603
MD5 735b95a88aefcefd35dabcd87189c340
BLAKE2b-256 04570913acc738f264ebb0b3aa41db5761b490a7c2a8212ad5990f1e7334ff65

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 401101d26c0583013746f9d41374df6bde0525b515932377669d6389a9c0648e
MD5 6ffc0f25e8e6203ceb2e9956f50f840c
BLAKE2b-256 25f89886690d0b916153f9c0c6aa362b4f7f89a99de260c29aa7fa8b740bd271

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c94d4943337613e5bf951db5d5add7aa687ec83cbc5e22f6f407a0bf3532a768
MD5 c92a47fbe740df934ef92f19192cdc6b
BLAKE2b-256 30c93dacb4a48470683fdeb897d36f228b8d7c808acc1a14d3d59898b2687fcf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cnrocr-0.5.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.6 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.5.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8db59e7b7b48048b1047f3ad17d35ebe5853387adb65c42a6a3dfb35d23cf483
MD5 e0d445573008012ca88e67fdf89c5dbf
BLAKE2b-256 c15b813f8968d84b72a2c8256bc8f3a195e0783639f232810f311ebe7e1a6e7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ae7a6f46fb15079ba52ea36b7bd5f84043cf337bc3c25ef4ff4d528d59a7ae0c
MD5 155c9504f2307cc7acfbbf04e27b5d28
BLAKE2b-256 4cc32b640ce04cd5caee77e531c0ca51e92bf17fb4862c42aa8c078c5e44fc4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b6ab10b8fc416e3cef4c7989c2fd127a99c814238835599220ae6e2a3e1fef9c
MD5 844644c748a083bd99c01640b57f788c
BLAKE2b-256 60c92158dbbbfd66ffb0767b8cfa37e3efa92ea7dada422c6ec392766b3a2810

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f8709c4b42dbdcecba782499b97f25c565e049a00a210634b0d1ed4e6e7af267
MD5 3dbfbb4fe420b19698b06a6b0f42d6a1
BLAKE2b-256 ad60a77852daa3cc279b89d7643d12ecd4f3cbd627fff9459a73db0d991430d2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 aa87a8090b85b715e86f7a2927b67ff921bb439c1d3d8ba37c8262fd6d8754e7
MD5 4b1a9884273cc45a8eba94a37dc97b8d
BLAKE2b-256 a499212f0bd9dce8a933e5b76cdd1aca6244aeb348deb2dbbafe8c28ed358d3d

See more details on using hashes here.

Release history Release notifications | RSS feed

0.6.11

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

This release

0.5.3 This release

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