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.9-cp313-cp313-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.13Windows x86-64

cnrocr-0.5.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (13.8 MB view details)

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

cnrocr-0.5.9-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (13.4 MB view details)

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

cnrocr-0.5.9-cp313-cp313-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

cnrocr-0.5.9-cp313-cp313-macosx_10_13_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

cnrocr-0.5.9-cp312-cp312-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.12Windows x86-64

cnrocr-0.5.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (14.0 MB view details)

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

cnrocr-0.5.9-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (13.6 MB view details)

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

cnrocr-0.5.9-cp312-cp312-macosx_11_0_arm64.whl (1.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cnrocr-0.5.9-cp312-cp312-macosx_10_13_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

cnrocr-0.5.9-cp311-cp311-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.11Windows x86-64

cnrocr-0.5.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (14.0 MB view details)

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

cnrocr-0.5.9-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (13.8 MB view details)

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

cnrocr-0.5.9-cp311-cp311-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cnrocr-0.5.9-cp311-cp311-macosx_10_9_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

cnrocr-0.5.9-cp310-cp310-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.10Windows x86-64

cnrocr-0.5.9-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (13.3 MB view details)

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

cnrocr-0.5.9-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (13.0 MB view details)

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

cnrocr-0.5.9-cp310-cp310-macosx_11_0_arm64.whl (2.0 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cnrocr-0.5.9-cp310-cp310-macosx_10_9_x86_64.whl (2.1 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: cnrocr-0.5.9-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.8 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.9-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1a7b3dec703f1d6d5cb3ab3ab8b55776f1af552f80aa7df8dbbb5296f385980e
MD5 499787abcb07ae5b3e1d58955365aad1
BLAKE2b-256 7cfe46b0e59a4c1079c61d283fe240c8d923de9760436597bf77d7a14264dabf

See more details on using hashes here.

File details

Details for the file cnrocr-0.5.9-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.9-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0aeea1ce67f2ca7ac37e87f0fa03b235f2b4686b09bc02f00f533a96ced0ed43
MD5 9978eccf71c6863e49b997dbac9b84f7
BLAKE2b-256 ae6e1e1cece5187b1259bd5de499a320aad10c3332dddd984ec7faa07e70c4cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.9-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f4ff2979da2c9329a7792dae147f878876a6e007b036019570b3bb6e2183bfce
MD5 98ad7f3f3c4133db976b4794e1bd2fbf
BLAKE2b-256 43fbb714d7cf26aad7a08414f589457e969feaaf86a0f4781e87099d3991a0e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.9-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 329fa277bcd3f7577905d580d84b02dc4c0da328afc60d4388829711bf3cdd36
MD5 80b0358e9952a22529fad02566bbbed7
BLAKE2b-256 413d402e7446be243546b655227e5fb0755bf8feef00b002292f957316a5638a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.9-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 9b36ceab76ccf028c98750492c78b1b8af60ef2a2bd616c0dd2f4e2b7888f137
MD5 19559471b79e2ae9fec972e42fedbde1
BLAKE2b-256 e5fd9ad5e34e20a88ade7e6891235139d06502cd321c18820ca4cafcab463b0f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cnrocr-0.5.9-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.8 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.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 0736f6e902a82499e9e59a118a770ca5c0052619e5971cbd0e49eaccc91f660c
MD5 a34ad71400f56896b10d6064917e6b8f
BLAKE2b-256 641216d7fa3a1bee84f7914c45a744ff4758ced648e74ef108e1f667bb8f757c

See more details on using hashes here.

File details

Details for the file cnrocr-0.5.9-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.9-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 10a2b691b7e82dd278fe9cd3879d3a6f60bfe46a77c27c579139fdd71ee5da9f
MD5 890e1331f0c2f26cb4aa423b2ac50cb5
BLAKE2b-256 d3bed4e877c542057a112cdc2783fa08bf41de4f3d431badf5a0c5328cee7737

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.9-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 05c54ace0c162a67695f206430ba7781473d9f12077a4c065ef05cd3d068fee5
MD5 b0ecddb8e00e1d5fb2e994f00f485e57
BLAKE2b-256 8cb063795b90ad0a7dc0a803483680bae9cec9abe3f4a0ebbba8f7cc5436febd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.9-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 93f38a7d9b2c8d91971bb5e75aa9c5007ae2891500d9c1184b580f2d54d36aa5
MD5 26d121ac1249a79c49812e312024480d
BLAKE2b-256 d56d616cdff0e24e14bddba75452c15cfa606ce5c19e4caa83a94688db7be9d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.9-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 006629167b94ba497766682a341481da1636528562a71089495b650b82320e55
MD5 4fee64b60fda609805e3f62901916a27
BLAKE2b-256 28c310c470561e6dfe9ec0f8bc9be83c61d3b545beeff06ec5e41ff64a27be21

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cnrocr-0.5.9-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.8 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.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6765577c9040840d307089f4a044530363738d5af62ffcf328645c7298a5b7e5
MD5 88e6a3f265d96fd2d3051e1f2b993bc1
BLAKE2b-256 9454d82db8f71ca98e69b0a80aca5690be2fb0a972f9d6c7511beed3ba7d541f

See more details on using hashes here.

File details

Details for the file cnrocr-0.5.9-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.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 69e189828cea56c6624c37c2067edee19805b403be50e6977b2cfbcc31fcb0ba
MD5 381b873eabb8402b11e62a8e3a01fb9a
BLAKE2b-256 66f4efc4e4f86ad04d2ff068ca72aed7bfb0ce64615f344a3256b665c0b9340d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.9-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3d0a30c22942c94b20c089edf71860b34b8971d99770bc04811f35d17ba1a948
MD5 3c49a3105f6f37a38bec2c0dbb03f61f
BLAKE2b-256 c922a70ced325be16c1002d88c90df45e98e4e18621c3d6522642250e74b008f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.9-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 36929ae10aa478c67e63582ebc5afbccd7caa264cad53f06b25b0736cb5bf146
MD5 4ca4141e813382719411199f4fc523bd
BLAKE2b-256 1c9e8909c53acf46080d3b460f0dc41c365c2754be2976b4014a0f1a83305c4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.9-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f9ef388392db35a19b92cbf3c65cc3ce63ff59022e5e939de8455bf49d27695c
MD5 f54e78584398084e53b801278e6e4519
BLAKE2b-256 fe6f5a4cbc4af9f67a498194b6d47ee5e6d91607a9e12455ae50cb8793fdf7f8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cnrocr-0.5.9-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.8 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.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 70e0db380fa3d1c8b110e1c4dedee8e0ffc68fc7a1c92f4f0789b845c57338f2
MD5 af2abd9311c2ebc8070ff2a90c03a3ef
BLAKE2b-256 8d11406510e11005c7da9d9c1616c983feb59f073d3328a35a4f9e3bb25dbc59

See more details on using hashes here.

File details

Details for the file cnrocr-0.5.9-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.9-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3ce73f709066d9f7c17a047aaad206ffb954dd9020dd8d5091b10a6ad3dcb679
MD5 d12d5bd52cc3b8eb355b24caab1f86d6
BLAKE2b-256 f68f1d56a4ad215cd0ab08d1196cabb27f0964c03a890aa5d2d9b50da35c55e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.9-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 755f37b530d5ae56fd171d414bfeefe43c624e6d486d870ad459a02a4cd584fb
MD5 360ab4a9d2a30558546c2793e48a6943
BLAKE2b-256 d93a6c17ffe0b5cfc454eca23162d64dd66a175a8abed92dc9e23213d03c5232

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.9-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 81663575cc5d9977188f37621a9fea9448987e51539cc685f32b9fce59c03904
MD5 ed9898588c4c94001fb809495faf3b2e
BLAKE2b-256 f7d4e5ee05811d355e1fbd33af133daa188278e14e312cd713a4620e516c6962

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cnrocr-0.5.9-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c4d4fbf5b3f2b00949a4db39866f0a6e598a2ff26b3492fe11c17a7f83f9db1d
MD5 6850b332cf430bf30260bbb41cd14c0c
BLAKE2b-256 0bb45e93559e275818178136077d0b6d0bb515cd79adb246f8801672d3a95100

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

This release

0.5.9 This release

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