Open a Gorkhapatra e-paper PDF from a few years back and copy a line of text out of it. Paste it anywhere else and you get garbage — boxes, Latin letters, nothing that looks like Nepali. The PDF has a text layer, but it was written in a legacy 8-bit font encoding that maps Devanagari onto ordinary Latin character codes — the same trick Nepali desktop fonts have used for decades. To anyone trying to reuse the archive, the page is illegible. It has been illegible for years. But a wrong label is not the same as no information: convert it back, line by line, and a scanned newspaper page quietly hands you a free, machine-made transcript of exactly what it says.
That's the trick behind this project. Take PaddleOCR's official Devanagari model — already decent at reading printed Nepali — and fine-tune it on these image-and-converted-text pairs: 125,017 lines pulled from 19 editions of Gorkhapatra. The labels are "silver," not gold — a font conversion, not a human transcription, with its own manual fix for conjuncts that still come out wrong. But there's a lot of them, and the training ran not on Paddle's own trainer but on a PyTorch port of the same architecture, on a Mac, because getting Paddle itself to train on Apple's GPUs didn't work. The resulting checkpoint got exported back out to ONNX and served through the normal PaddleX pipeline, so from the outside it looks exactly like any other Paddle model. Only the training machinery is borrowed.
The result on held-out newspaper print: a character error rate of 0.57%, against 5.13% for the unmodified official model, on the same 3,000 held-out chunks. On full lines instead of smaller chunks, 2.57% against 7.69%. The gap barely closes when the test set is a synthetic page of English printed in an unfamiliar font: 2.84% against 10.62%. That's a newspaper-reading model that genuinely reads this particular newspaper better than the general-purpose one it started from — because it has, in effect, seen the answer key.
Then the surprise. Run the same two models on handwriting, and the fine-tune loses — badly. 40.75% error for the official model on a set of handwritten Nepali words; 68.86% for the one fine-tuned on newspaper print. It loses on handwritten Hindi too, by similarly wide margins. The model learned to read a specific newspaper's typefaces and a specific conversion script's quirks so well that it got worse at the general task of reading human handwriting it had never seen a style of. Specializing has a price, and here you can put a number on it.
Two more things didn't make it past the newspaper. A separate attempt at reading Newar language text written in Devanagari script looked promising once — a diagnostic score in the single digits — until an audit found the training and test sets overlapped: real lines appeared in both, so the number meant nothing and the whole pack is now marked not admitted. And a different attempt to teach a model the actual Newa script, not Devanagari standing in for it, failed to even fit its own training data — the wrong kind of mismatch between a model built for machine print and reams of centuries-old handwritten manuscript. Both are documented as closed, not quietly dropped.
None of this data belongs to Ampixa. Gorkhapatra's publisher cleared internal training and derived statistics, by the project owner's own decision — not by a verified legal determination of the newspaper's copyright status, which the documentation itself still calls unverified — and that clearance explicitly does not extend to handing out the underlying page images or crops. A separate, much smaller research checkpoint trained differently was published openly, but under a non-commercial research licence, with no training images attached, and it still falls short of its own 4% handwriting target.
What's next: closing the gap between a model that reads one newspaper well and one that reads handwriting at all, without losing the first to get the second; resolving whether Newar can be read as its own script instead of borrowed Devanagari; and tying every number above to one specific, checksummed training run, instead of a recipe file nobody has pinned down yet.
