can a computer on your desk read a plat?

Tagged as plat2json, qwen, vlm, surveying, local ai

Written on 2026-06-30 16:30:00

Or: a field test of local vision models, for surveyors

A narrow, practical question, the kind I actually care about: can a vision model running entirely on your own machine, offline, read the bearings and distances off a plat well enough to be useful? Not a cloud servicei.e. not "upload your client's recorded document to somebody else's server" — the whole point is that nothing leaves the desk. A model that lives on the desktop and reads the calls the way you'd skim them before typing them into your drafting software.

I tested exactly that, and the results are honest enough to be worth writing down for other surveyors.

the setup, in plain terms

The models are from the Qwen2.5-VL familyopen-weight vision models you download and run yourself, served through llama.cpp — nothing phones home. Two ways:

  • a 7-billion-parameter model on a modest gaming GPU (an 8 GB RTX 4060), and
  • a 32-billion model on a 32 GB Mac laptop (M1 Max).

The job: hand the model a tile of the plat, get back a list of what it read, each item tagged bearing or distance. To grade it honestly I needed an answer key I didn't writefor vector plats that still carry a text layer, I harvested the true calls straight out of the file — the model never sees that layer, it only looks at the picture. Blind test: read the image, compare against ground truth it couldn't peek at. Four county plats, 94 bearings and 192 distances.

what it gets right, and what it misses

The number a surveyor wants is recall — of all the real calls on the sheet, what fraction did it find?

| | 7B (8 GB GPU) | 32B (32 GB Mac) | |---|---|---| | bearings found | ~75–85% | ~88–90% | | distances found | ~70–72% | ~82–86% |

Read those like a new instrument person's first day. The small model finds about three calls in four; the big one closer to nine in ten. Neither finds all of them, and that's the entire point of how you'd use this: a fast first pass, not a system of record. A few surprises:

  • Bearings beat distances. I expected the reverse. But a bearing has a rigid shapeN 15°48'05" E — the model locks onto the skeleton even rotated along a line a bare 152.31 doesn't, and loose digits are where vision models fumble.
  • Rotated text is the hard part. We letter bearings along the line, so the text sits at every angle on the page — exactly what trips OCR, and where the big model earns its keep.
  • A 3B model is useless here. I tried one. It scored zero — can't resolve small rotated degree-minute-second text at all. There's a real floor.

the part that beats model size: resolution

The biggest accuracy lever wasn't the model, it was how I tiled the image. My first instinct — big 2200-pixel tiles — was wrongit blurred the small lettering, and the 8 GB card couldn't hold the activations anyway; the binding constraint is memory per image, not the model's context length, which surprised me. Switching to smaller tiles at full resolution — about 1100 px, overlapping so nothing falls in a crack — nearly doubled bearing recall on a dense sheet, from ~40% to ~75%.

There's a sweet spot worth knowing if you ever try this:

  • below ~640–768 px per tile, accuracy falls off a cliff (the small model especially),
  • above ~900 px you stop gaining anything; you're just spending time.

So the recipe is "tile small, keep it sharp, overlap the tiles" — not "buy a bigger model" and not "shove the whole page in at once."

big model or small?

Mostly a trade in time. The 7B reads a tile in 2–4 seconds — right for sweeping a stack of plats to see what's there. The 32B takes ~27 secondscall it eight times slower and buys 10–15 more points of recall, mostly on the distances the small model was weakest on — right when you've picked a document and want the cleanest first pass. Neither needs a server farm: a gaming GPU you might already own, or a well-specced laptop.

why I trust any of it: nothing stands alone

Surveyors are rightly suspicious of software that claims to "read" their documents, so: I don't trust the model's output on its own, and neither should you. The reader is one witness. The geometry pipeline independently traces and measures the lines and curves off the same platthe other post is all about this half, and the two get matched — a distance only counts when there's a segment measured at the same length; a bearing only counts when it lines up with a traced line's azimuth. A hallucinated digit won't match a real segment, so it gets flagged instead of silently entered. The claim is never "the AI read it right." It's "the read and the drawing agree, and here's the one place they don't — go look."

Corroboration overlay on a survey plat A parcel boundary with witnessed lines drawn in plain ink, one amber arc flagged for contention between fitted and recorded radius, and two dashed-blue regions flagged as unwitnessed: a west boundary line whose bearing was unread and an interior note block in another language. ⚠ Curve C1 fit 150.2 m table 152.0 m ◌ L5 unread ¶ ·· ¿? ·· ◌ note — other language N 78°12′05″ E · 245.30 S 39°44′10″ W 168.40 S 84°55′22″ W · 210.62 N 0 50 m Contention — two witnesses disagree (fit vs. table, read vs. measured) Unwitnessed — feature traced, no corroborating read
The corroboration overlay: plain ink where the model's read and the measured geometry agree, amber where they conflict (the fitted radius misses the recorded curve table by 1.8 m), and dashed blue where a feature was traced but never read — a boundary line lettered at a steep angle, and a note block in another language. The machine drawing the boundary of its own doubt.

bottom line

A local vision model can read most of the calls off most plats, offline, on hardware you can afford, with no client document ever leaving your desk. It'll miss some. It's a drafting assistant that gives you a fast, checkable first pass — and the checking is done by the plat's own geometry and curve table, not by faith in the model. For people who've spent careers being precise about what a number means and where it came from, that's the right frame: not automation that replaces judgment, but a second set of eyes that's fast, tireless, cheap, and never allowed the last word.


HALLUCINATED DIGIT. NO MATCHING SEGMENT. FLAGGING FOR HUMAN. PLAT-94.


Unless otherwise credited all material Creative Commons License by Kevin Griffin