diff --git a/docs/usage.md b/docs/usage.md index 20803f2a6..a9a38b130 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -109,7 +109,7 @@ Think of versions as **file history** for a document. Paperless-ngx includes management lists for tags, correspondents, document types and more. These areas allow you to view, add, edit, delete and manage permissions for these objects. You can also manage saved views, mail accounts, mail rules, -workflows and more from the management sections. +workflows, [OCR templates](#ocr-templates) and more from the management sections. ### Nested Tags @@ -792,6 +792,67 @@ The following custom field types are supported: - `Document Link`: reference(s) to other document(s) displayed as links, automatically creates a symmetrical link in reverse - `Select`: a pre-defined list of strings from which the user can choose +## OCR Templates {#ocr-templates} + +OCR templates read text from fixed areas ("zones") of a document and write it to a +[custom field](#custom-fields), or to the document's title, archive serial number or created date. They are +useful for documents that always share the same layout, such as bills from a particular utility. They allow you +to draw a zone around the account number once, and every new bill gets its account number filled in. + +Each template belongs to a document type and runs on documents of that type. + +### Creating a template + +1. Open **OCR Templates** under "Manage" and choose **Add Template**. +2. Give the template a name and choose the document type it applies to. +3. Search for a sample document of that type. Its pages are shown next to the template settings. +4. Draw zones on the document, edit them as needed by clicking it. +5. Choose the field each zone fills. +6. Use **Test** to run OCR on the selected zone of the sample document and see the text it finds and the value + that would be written. + +Zones are positioned relative to the sample document's page, so templates work best when documents of that +type have an identical layout. + +### Zone settings + +- **Page**: the page the zone is on. Turn on **Last page** for zones that are always on the final page, + regardless of how many pages a document has. +- **OCR language**: the Tesseract languages used to read the zone. Languages other than the defaults must be + installed, see [`PAPERLESS_OCR_LANGUAGES`](configuration.md#PAPERLESS_OCR_LANGUAGES). +- **Transform**: post-processing applied to the text, such as stripping whitespace, keeping only numbers, + parsing a date or reading a QR code or barcode instead of text. +- **Date format**: for the "Parse date" transform, the format of the date using + [Python date codes](https://docs.python.org/3/library/datetime.html#format-codes), e.g. `%d.%m.%Y`. + Leave it empty to detect the format automatically. +- **Validation regex**: a regular expression the whole value must match. Values that do not match are not + written. + +Zones can fill custom fields of type text, long text, URL, date, integer, number, monetary or boolean. +Document link and select fields are not supported. + +### Combining zones + +When several zones fill the same field, a **Combined value** setting appears for that field. Use it to arrange +the zones' values with `{Zone name}` tokens and any text in between, for example `{Start} - {End}`. If it +is left empty, the values are joined with spaces in zone order. + +### When templates run + +Enabled templates run: + +- when a document is added and its document type has a template, +- when a document's type is changed to one that has a template, +- on demand, using **Run Zone OCR** from the actions menu on the document details page, or from the + bulk editor for the selected documents. Bulk runs are processed in the background. + +!!! warning + + Zone OCR overwrites the fields it fills. A zone that finds no value leaves its field unchanged. + +Managing OCR templates requires the OCR template permissions, and running zone OCR on documents requires +permission to change them. + ## PDF Actions Paperless-ngx supports basic editing operations for PDFs (these operations currently cannot be performed on non-PDF files). When viewing an individual document you can