DocView Capture by DocView.AI3 Nov 2026 09:48

DocView OmniRead (high-accuracy OCR, handwriting and barcodes)

DocView OmniRead reads documents more accurately than the built-in OCR, on your own computers and without a cloud service. It reads:

  • printed text in 50 languages (including the Welsh letters ŵ and ŷ), with word positions and confidences;
  • handwriting in zones (neat hand printing reads well; with the vision model allowed, unsure handwriting is read by it too);
  • barcodes of every common kind (Code 128, Code 39, EAN/UPC, ITF, Codabar, QR, Data Matrix, PDF417, Aztec and more), at any angle, several per page, including small and damaged codes;
  • and, if you switch it on, a vision model that answers a question about a page or zone ("What is the invoice number?") or transcribes it.

OmniRead runs on ordinary processors (no graphics card is needed). It is a separate service: install it on the DocView server, on a stronger machine of its own, or on several machines for large volumes. It can also run inside the DocView Workers.

How it fits in

You choose Where
DocView OmniRead as the OCR engine of a Batch Setup (or one document class) Batch Setup › General › OCR engine — see OCR engines and languages
Handwriting (DocView OmniRead) for a field or finder Field editor or Finders › Method — draw the zone on the sample
Ask the vision model (DocView OmniRead) for a field or finder Field editor or Finders › Method — type the question
The barcode reader for separation, classification and barcode fields Administration › DocView OmniRead › Barcode reader

Install the service

You need: 64-bit Windows 10/11 or Windows Server 2019 or later (or Linux with Docker), 4 CPU cores and 8 GB of memory (16 GB with the vision model), and 1 GB of disk for the models (3 GB with the vision model).

  1. Go to Administration › DocView OmniRead (permission Admin.Settings).
  2. Under Install a service, choose For another machine or For this machine only. The download carries this site's OmniRead key.
  3. Copy the file to the machine and run it as an administrator. It installs to C:\Program Files\DocView OmniRead, starts the Windows service DocView OmniRead on port 5300 and offers to download the models.
  4. Back in DocView, add the service address under Service addresses, for example http://ocr-server:5300 (or http://localhost:5300 on the same machine), and click Save. The Status panel shows the service, its version and whether its models are ready.

"For another machine" opens TCP port 5300 in the Windows firewall for domain and private networks. "For this machine only" listens on localhost and opens nothing.

To remove the service, use Settings › Apps on that machine (DocView OmniRead › Uninstall). The models stay in C:\ProgramData\DocViewCapture\OmniRead\models unless you run DocViewOmniRead uninstall --remove-models.

Several services

List several addresses, one per line. Requests are shared out in turn; a service that is down, busy or failing is skipped and tried again 30 seconds later. Each service works on a limited number of requests at once (OmniRead:MaxConcurrency, a quarter of the processor's threads by default) and queues the rest.

Linux and containers

docker build -f Dockerfile.omniread -t docview-omniread .
docker run -d --name omniread -p 5300:5300 \
  -e OmniRead__Key='<the key>' \
  -v omniread-models:/var/lib/docview-omniread/models docview-omniread

Get the key with Show the key on the DocView OmniRead page. Download the models into the volume once with docker run --rm -v omniread-models:/var/lib/docview-omniread/models docview-omniread download-models --all, or let the service download them when first needed.

Inside the DocView Workers

Choose Inside each DocView Worker under Where it runs. Each DocView Worker then loads the models itself (about 2 GB more memory per DocView Worker; 4 GB more with the vision model) and downloads them on first use into C:\ProgramData\DocViewCapture\OmniRead\models. The web server has no OmniRead engines: tests and previews on Batch Setup screens use the service addresses, so list at least one service if you want to try OmniRead there.

Models

The models are not part of the program. They are downloaded from their publishers when first needed, or all at once with:

"C:\Program Files\DocView OmniRead\DocViewOmniRead.exe" download-models --all

Every file is checked against a fixed SHA-256 before it is used. DocViewOmniRead info lists which models are ready.

Model Used for Size
Printed text, fast Page OCR in fast mode; finding the lines of handwriting zones 31 MB
Printed text, accurate Page OCR in accurate mode (default) 139 MB
Line orientation Lines printed upside down 1 MB
Vision model Questions about a page or zone; second reading of unsure handwriting (optional) 1.5 GB

The models come from their publishers' pages on huggingface.co; allow that address through a proxy or firewall, or copy the model folder from a machine that has them.

To keep models elsewhere set OmniRead:ModelFolder in appsettings.json next to the program.

Settings

Administration › DocView OmniRead:

Setting Meaning
Where it runs OmniRead services, or inside each DocView Worker.
Service addresses One per line.
Time limit How long DocView waits for one answer (120 seconds by default).
Page OCR Accurate (larger models) or Fast. A Batch Setup can't override this yet.
Barcode reader for recognition Built-in, DocView OmniRead, or both. Patch codes are always found by DocView. If OmniRead can't be reached, the built-in reader is used.
Read unclear lines again with the vision model During page OCR, up to 8 lines per page the text reader is unsure of are read by the vision model; if both agree the line counts as sure, otherwise the more confident reading is kept. Slow, and needs Allow the vision model.
Allow the vision model Needed for the Ask the vision model method and for the second reading of unsure handwriting. Switch the model on in the services too (below).

Try it reads an image you choose with the current settings: text, handwriting, barcodes or the vision model.

The service's own settings are in appsettings.json next to the program (section OmniRead):

Setting Default Meaning
Key from the download The key DocView signs requests with. New key in DocView makes every service refuse requests until it has the new key.
ModelFolder %ProgramData%\DocViewCapture\OmniRead\models Where models are kept.
MaxConcurrency / MaxQueue ¼ of the threads / 64 Requests at once / waiting.
ThreadsPerRequest ½ of the threads (at most 8) Threads one request uses.
EnableVlm false Switches the vision model on.
DownloadOnDemand true Download missing models when first needed.
AccurateMaxSide / FastMaxSide 2560 / 1600 Longest side (pixels) a page is scaled to for finding text.

Restart the service after changing them (Services › DocView OmniRead › Restart).

Sharing the server, pools and instances

Automatic sizing. Each service sizes itself from the processor. It keeps one logical processor in eight free (at least one) and shares the rest between pages read at the same time. For example, 32 processors give 7 pages at once with 4 threads each. It also reads at below-normal priority, so the web app, DocView Workers, SQL Server and remote desktop on the same server stay responsive under full load. To switch this off, set "LowPriority": false.

Set from DocView. Settings › DocView OmniRead › Service settings lists every service with its machine, processors and instance. For each one you can:

  • leave Automatic on (recommended), or set Pages at once and Threads each yourself;
  • give it a Pool name.

Select Apply. The service uses the new settings for new pages at once; pages already in progress finish first. It keeps the settings in its data folder (settings.json), so nobody needs to edit files on the server. The Status card shows, for each service, the pages being read, the pages waiting, the sizing and the pool. Changing settings from DocView needs services of version 1.6 or later.

Pools. Services are in the pool "General" unless you name another. In a Batch Setup, under Workflow › OCR, enter a DocView OmniRead pool: only the services of that pool then read that Batch Setup's pages, including barcodes, handwriting and vision fields. When none of the pool's services can be reached, the pages go to the other services so that work does not stop. Leave the pool empty to use any service.

Several instances on one machine. DocView Setup asks for an Instance name when it installs DocView OmniRead. Leave it empty for the standard service. A name, for example B, installs another one beside it:

  • its own folder (C:\Program Files\DocView OmniRead B), Windows service (DocView OmniRead (B)), data folder, logs, settings and port;
  • the same models as the standard service.

From the command line, run DocViewOmniRead.exe install --instance B --port 5301, and remove it with uninstall --instance B. Instances on one machine share its processors, so together they read no faster than one service using all of them. Run more than one for resilience (one can restart while the others work) or to give a pool its own service.

Example: one service using a 32-core server, set in the file. Without DocView, for example on a stand-alone service: open Notepad as an administrator and open C:\Program Files\DocView OmniRead\appsettings.json. Add the two settings to the OmniRead section and keep Key and Server exactly as they are:

{
  "OmniRead": {
    "Key": "(leave as it is)",
    "Server": "(leave as it is)",
    "MaxConcurrency": 8,
    "ThreadsPerRequest": 4
  },
  "Kestrel": { "Endpoints": { "Http": { "Url": "http://0.0.0.0:5300" } } }
}

Save the file, restart the service, then run "C:\Program Files\DocView OmniRead\DocViewOmniRead.exe" info. It shows "requests at once: 8". Keep MaxConcurrency × ThreadsPerRequest a little below the number of cores when DocView's web app, DocView Workers or SQL Server run on the same server. Settings made in DocView (Service settings) take precedence over the file.

Handwriting fields

  1. In the field editor (or on the Finders page) choose Handwriting (DocView OmniRead).
  2. Draw the zone on the sample, with a little room around the writing (Margin).
  3. Optionally: Remove form lines first for boxes and underlines, Allowed characters (for example 0123456789/ for a date) and Capitals only.
  4. Click Test.

Handwriting is read line by line by the same text recognition as printed text, which reads neat hand printing well. When Allow the vision model and Read unclear handwriting again with the vision model are both ticked, a zone read with less than 80 % confidence is also read by the vision model: if both readings agree the value counts as sure (95 %), otherwise the more confident one is kept (the vision model counts as 85 %). Try it shows which reading was kept. Set the field's confidence threshold so unsure values reach an operator. Joined-up cursive writing is hard for every engine; check those fields.

Forms with advanced zones

Forms imported from Kofax (or set up with Advanced zones (form)) can have their text zones read by OmniRead's handwriting model: set "engine": "omniread" in the finder's settings. The printed comb boxes are removed from each zone first, all the text zones of a page go to OmniRead in one request, and letters written one per box are joined. A zone OmniRead cannot read is read the usual way. On hand-printed application forms this reads far more values correctly than Tesseract.

The vision model

The vision model reads difficult values a person can see but other methods miss: handwritten amounts, stamps, values without a label. It is slow on processors (about 20 seconds for a line, about two minutes for a whole page on a 4-core laptop), so use it for a few fields, ideally as a fallback finder after a faster method.

  1. Switch it on: "EnableVlm": true in the service's appsettings.json, restart the service, and tick Allow the vision model for fields in DocView.
  2. Choose Ask the vision model (DocView OmniRead) and write the question, saying how to answer, for example "What is the invoice number? Answer with the number only."
  3. Optionally draw a zone, and give a pattern to keep only part of the answer.

Answers such as "None" or "N/A" count as not found. Answers that are found get a confidence of 85 %.

Measuring accuracy

The repository has a benchmark (tools/omniread-benchmark) that runs Tesseract, the built-in barcode reader, Azure and Google (when keys are set in environment variables) and the OmniRead engines over images with known text, and reports character and word error rates, barcode read rates and speed. See Building from source.

Troubleshooting

What you see What to do
Status: not reachable Check the service is running on that machine (Services › DocView OmniRead), the address and port, and the firewall (download "For another machine").
refused DocView's key The service has another key. Download and run the installer again, or set OmniRead:Key to the value shown by Show the key.
Models not downloaded yet The service downloads them when first needed. Without internet access, run download-models on a connected machine and copy the folder.
Every OmniRead service is busy Add services, or raise MaxQueue. Recognition retries the batch later.
The vision-language model is switched off Set EnableVlm in the service and tick Allow the vision model in DocView.
Recognition is slower than with Tesseract It is: on a 4-core laptop processor accurate mode takes about 4–5 seconds for a full A4 page of text and fast mode about 2 seconds (Tesseract: under 1 second). Use Fast, run several requests at once on bigger machines, or add services.

The service logs to C:\ProgramData\DocViewCapture\OmniRead\logs (Linux: logs next to the program, or the container log).

Still stuck? support@docview.ai · +44 7886 864921

Made with DocView Capture by DocView.AI · www.docview.ai