doctr-native — in the browser

The same db_resnet50 + crnn_vgg16_bn engine the CLI runs, loaded straight out of src/ with no edits, no bundler and no npm packages. An import map remaps its node:* imports onto shims; the weights arrive over fetch into a virtual filesystem.

1 · weights

int8 changes the output — it is not just faster. Measured on the project's sample page (README, “The int8 trade”): int8 detection emits 666 boxes instead of 660 and keeps only 564/660 box geometries bit-exact; int8 recognition keeps every box and costs one character in one word, but moves confidences — 290 of 660 words move by more than 1e-3. Pick fp32 if you are comparing against the Node build.
not loaded

2 · execution path

f32 GEMM kernel
int8 GEMM kernel
compute backend
GPU self-check
recognition tier
threads
weights in workers
SharedArrayBuffer
crossOriginIsolated
hardwareConcurrency


The GPU tier runs vgg16_bn_r and the CRNN head on WebGPU and is used only after selfCheck() has run the 64 fixture crops through BOTH paths on this machine and found every one of 260,096 logits bit-identical and all 64 strings equal. It is fp32-only and it replaces the worker pool, so the worker count below does not apply to it. Detection stays on the CPU either way.


3 · image

Drop a PNG or JPEG here, or click to pick one.
PDF is not supported in the browser. The Node build rasterises PDFs with pdftoppm; a page has no subprocesses, and a JS PDF parser would be an npm dependency this project does not have. Run pdftoppm -r 144 -png in.pdf page first and drop the PNGs.

stages

    progress

    idle

    log