Optical character recognition
What the in-house recognition engine has read from the project's scans, and what those readings are worth.
Why
Throughput and confidence are computed from the readings the project actually holds. No external recognition service has been called.
Writes are validated against the engineering rules and then refused, because no database has been configured for this environment.
No commercial OCR service has been activated
eds-stroke-ocr engine’s. Azure AI Document Intelligence, the approved production candidate, has never been called; nor has Google Cloud Document AI. Nothing on this page is a claim about either.Scanned documents
3
Pages read by OCR
2
Characters recognised
39
Readings from a scan
8
Refused as unreadable
1
Per reading method
The mean and the lowest, because a mean on its own hides the one bad reading - and that is the only one that matters.
| Method | Engine | Readings | Mean confidence | Lowest | Ceiling |
|---|---|---|---|---|---|
| native_text | pdf-native 0.1.0 | 70 | 75%Unverified | 40%Unverified | 80% |
| ocr | eds-stroke-ocr 0.1.0 | 8 | 58%Unverified | 40%Unverified | 60% |
| both | pdf-native+eds-stroke-ocr 0.1.0 | 8 | 68%Unverified | 50%Unverified | 70% |
| structured | xlsx-reader 0.1.0 | 45 | 94%Unverified | 50%Unverified | 100% |
| none | nothing reads this | 0 | no readings | — | — |
Scan quality
Measured from the page image, not declared. A refusal states what is wrong with the file.
| Document | Title | Quality | Outcome |
|---|---|---|---|
| ZRF-PID-1101 | P&ID - Inlet Separation (scanned) | 72%Unverified | Read |
| ZRF-PID-3101 | P&ID - Cooling Water Circulation (mixed) | 81%Unverified | Read |
| ZRF-PID-9001 | P&ID - Flare Header (unreadable scan) | 11%Unverified | RefusedA scan too faint to read. Processing refuses it and states why; nothing is extracted. |
The engine
- Identifiereds-stroke-ocr
- StatusExperimental
- Alphabet39 characters
- Reject distance0.260
- Confidence ceiling60%
No dependency, no model download, no network call.
It refuses rather than guesses
A character further than the reject distance from every template is returned as a refusal, not as the nearest match. That lowers the recognition rate and is the reason the output is usable at all: a confident misreading of a tag reaches a register and is believed, and a gap does not.
What the accuracy figures mean
The engine’s measured accuracy is on synthetic lettering rendered from its own stroke alphabet. That is a regression result: it says the engine still works. It says nothing about a real drawing office stencil, a faded dyeline, or a sheet somebody photographed on a phone - and no claim about those can be made until a real corpus exists.
The slashed zero
An unslashed zero is read as a capital O almost every time, which is why the engine’s primary glyph is the slashed zero an engineering drawing uses. A plain ellipse is reported as O with 0 named as the alternative, rather than being guessed either way.