glyphwise

Releases

What's new

Every release, newest first. Downloads: the latest release.

0.2.1

More accurate in other languages

  • A new recognition model, trained further on French, German, Spanish, Italian, Portuguese and Dutch text. With each language's own language model, character errors on held-out text fall by another 19-33% (French 2.78% to 1.85%, German 3.13% to 2.17%, Spanish 3.34% to 2.33%, Italian 3.76% to 3.06%, Portuguese 3.69% to 2.63%, Dutch 1.93% to 1.52%), and two in three lines now come back without a single error.
  • English documents read as before or slightly better: words found on the 38-page test set rise from 97.3% to 97.7%; handwriting reads about the same.

0.2.0

Languages

  • French, German, Spanish, Italian, Portuguese and Dutch, besides English: --lang fr (or de, es, it, pt, nl; --lang list shows them) picks the language model that corrects likely misreadings. On held-out text, character errors fall by 24-57% against reading those languages with the English model. The models ship next to the main model as models/line.bin.<code>.lm. The HTTP service takes ?lang= per request and lists its languages on /health; the library adds glyphwise_recognize_lang and glyphwise_languages.

For developers

  • Wrappers for Python, .NET, Java, Node.js and Go in bindings/: typed results (pages, lines, words with boxes and confidence), exceptions, languages and licence calls. Only Node.js needs a package (koffi).

Faster

  • Recognition on one processor core is 2.6 times faster, and 1.3 times faster on all cores, with identical results.

HTTP service

  • Optional token (--token-file or GLYPHWISE_TOKEN; clients send Authorization: Bearer <token>), a limit on pages per request (--max-pages, default 500; longer documents are refused before any work), a deadline for receiving a request (--timeout-secs, default 120), stricter request parsing, and a warning when it listens beyond this computer without a token. In evaluation mode only the pages that are returned are recognized.

Also

  • The licence agreement names the support address, sales@glyphwise.site.
  • The website has a live demo that runs the engine in the browser (nothing is uploaded), now with a language menu.

0.1.0 (first release)

Glyphwise reads scanned documents, PDFs, phone photos and handwriting on your own computer and returns searchable PDFs, plain text, JSON, hOCR or ALTO, with a box and a confidence score for every word. Nothing is sent anywhere.

Packages

  • Windows 10/11 x64 (.zip), Linux x64, glibc 2.35 or newer (.tar.gz), macOS 12 or newer, one universal build for Apple silicon and Intel (.tar.gz). Unpack and run; no installer.
  • Each package: the glyphwise command line, the glyphwise-server local HTTP service, the C library with its header and examples for Python, C# and C, the recognition model, the user guide, licence agreement and notices.

Reading

  • PDF (text layers read exactly; scanned pages recognized, including JBIG2 and JPEG 2000 images), TIFF (multi-page; LZW, Deflate, PackBits, CCITT G3/G4, JPEG), PNG, JPEG, JPEG 2000, JBIG2, GIF, BMP, PNM.
  • Pages are repaired before reading: turned or upside-down pages set upright, large skew removed, salt-and- pepper noise cleaned; phone photos straightened (the page found on the surface it lies on and flattened), shadows and uneven light evened out, and the photo's orientation tag honoured.
  • Tables and forms: ruled cells are read as separate blocks; columns are kept apart.
  • One model for printed text and handwriting, with a language model and word list that correct likely misreadings.

Output

  • Searchable PDF (--pdf for one combined file, or --out-dir DIR --formats pdf for one per input), plain text, JSON with every word's box and confidence, hOCR 1.2, ALTO v4, and --review for a list of the low-confidence words worth checking.
  • Folders and wildcards as input (glyphwise models/line.bin scans --out-dir out --formats pdf,txt); files are processed in parallel; --gpu uses CUDA or OpenCL on Windows and Linux.

Accuracy (public-domain test documents never used in training; details on the website)

  • Printed document lines: 0.31% character errors (Tesseract 5.4: 1.47%).
  • Whole pages including forms: 97.3% and 97.5% of words found on two test sets (Tesseract: 94.1%, 94.0%).
  • Phone photos of the same pages (angle, shadow, blur, compression combined): 96.5% (Tesseract: 90.9%).
  • Handwriting: 13.0% character errors on 18th-century manuscripts, 44.9% on photographed modern notes.

Licensing

  • Without a licence file every feature works in evaluation mode, limited to 3 pages per run (the HTTP service and the library: 3 pages per request or call, 25 per process). A licence file from https://www.glyphwise.site/#pricing removes the limit; it is checked offline.

Known limits

  • macOS builds are not yet notarized (clear the download flag once: xattr -dr com.apple.quarantine .), and Windows may show a SmartScreen notice for the unsigned programs.
  • Not supported: encrypted PDFs, PDF soft masks, BigTIFF, WebP, arithmetic or lossless JPEG.
  • Best on English and other Latin-alphabet text.