> For the complete documentation index, see [llms.txt](https://docs.apryse.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.apryse.com/core/ocr/ocr.md).

# OCR Library for Server/Desktop

Optical Character Recognition (OCR) with Apryse Server SDK, taking image based versions of characters and converting them into machine encoded text.  Code samples offered in Python, Java, C#, .NET, no

{% hint style="info" %}
**Requirements**

Packages and modules are required for production license. Trial keys have unlimited access to all features. Demo showcases functionality using the WebViewer UI.

<a href="https://apryse.com/capabilities#OpticalCharacterRecognition(OCR)" class="button primary">Package: OCR</a><a href="/core/learn-more/modules.md#ocr-module-options" class="button primary">Module: OCR</a><a href="https://showcase.apryse.com/ocr-module" class="button primary">Live demo</a>
{% endhint %}

[Optical Character Recognition](https://en.wikipedia.org/wiki/Optical_character_recognition) (OCR) is the process of taking image-based versions of characters and converting them into machine encoded text. This enables your application to recognize and convert characters from scanned images or image-based documents into machine-readable, searchable text.

This capability is essential for transforming static visual content—such as scanned books, photos of documents, or handwritten forms—into usable digital text that can be indexed, selected, copied, or searched.

Some popular use cases include:

* Data entry for business documents, e.g. Cheque, passport, invoice, bank statement and receipts.
* Extracting business card information into a contact list.
* Making textual versions of printed documents more quickly, e.g., book scanning.
* Making electronic images of printed documents searchable.
* Assistive technology for blind and visually impaired users.
* Making scanned documents searchable by converting them to searchable PDFs.

## OCR module options

Using an OCR module, the SDK can create searchable and selectable text from images or PDFs, producing either a PDF with selectable text, or outputting just the text position data in reusable JSON or XML form.

You have three OCR options to choose from when using OCR with the Apryse Server SDK:

* Default OCR
* Alternative OCR
* IRIS OCR

The default OCR Module offers **up to 50% better word recognition accuracy** due to its modern Deep Learning Neural Network-based implementation. It does not require a GPU to run.

The alternative and IRIS OCR modules offer up to 33% shorter processing time and less memory usage, ideal for those on limited hardware, or when speed is an absolute priority.

### Default OCR

The Apryse Server SDK offers a downloadable default [OCR Module](/core/learn-more/modules.md#default-ocr-module) as an optional add-on utility to use OCR with the SDK. It is currently available on Windows (x64), Linux (x64), and macOS (ARM64). The macOS build does not run on Intel Macs.

The default OCR Module is the newest OCR and delivers strong recognition capabilities across a wide range of document types. Beginning with version 12.0, it is based on modern Deep Learning Neural Networks for better accuracy and a wider variety of OCR language selection.

The default OCR module:

* Significantly improves accuracy on real-world documents and performs better on low-quality scans and complex layouts.
* Language coverage is greater and includes CJK, Portuguese, and additional Latin-alphabet languages.
* Extracted text is available as structured JSON or XML for downstream search, indexing, and AI pipelines – all processed on-premise or server-side, cross-platform, so documents never leave the customer's environment.

### Alternative OCR

The previous V11 OCR Module is still available under the [Alternative OCR Module](/core/learn-more/modules.md#alternative-ocr-module) section. For those who prioritize faster processing time on leaner hardware and less memory consumption, the alternative OCR Module may be the better choice.

The `apryse-ocr` pip package and the `AlternativeOCRModule` Maven packages install the Alternative OCR module, not the default one. To use the default OCR module, [download it manually](/core/learn-more/modules.md#default-ocr-module).

### IRIS OCR

For advanced layout scenarios—such as pages with multiple disconnected text regions like magazine covers or CAD drawings—you can, optionally, use the [IRIS OCR Module](/core/learn-more/modules.md#ocr-by-iris-module), which may provide improved accuracy and layout interpretation. The IRIS module is available as an additional add-on for Windows, Linux, and macOS platforms.

## Output Formats and Image Support

Once integrated, the OCR Module enables the SDK to generate Searchable PDFs with selectable text layers.

The module takes advantage of [pdftron.PDF.Convert.ToPdf](/core/conversion/convert-multiple.md) internally and accepts multiple image formats, as well as PDFs with only raster images. The result quality depends on image supplied. The ideal image is color or grayscale with resolution in the vicinity of [300 DPI](/core/ocr/resolution.md).

## Supported languages for OCR

There are supported languages for:

* Default OCR
* Alternative OCR
* IRIS OCR

### Supported Languages for Default OCR

The default OCR includes models optimized for English-language scenarios, as well as multilingual models supporting over 80 languages.

#### Latin

* English - en
* Afrikaans - af
* Azerbaijani - az
* Bosnian - bs
* Catalan - ca
* Czech - cs
* Welsh - cy
* Danish - da
* German - de
* Spanish - es
* Estonian - et
* Basque - eu
* Finnish - fi
* French - fr
* Irish - ga
* Galician - gl
* Croatian - hr
* Hungarian - hu
* Indonesian - id
* Icelandic - is
* Italian - it
* Latin - la
* Luxembourgish - lb
* Lithuanian - lt
* Latvian - lv
* Māori - mi
* Malay - ms
* Maltese - mt
* Dutch - nl
* Norwegian - no
* Occitan - oc
* Pali - pi
* Polish - pl
* Portuguese - pt
* Quechua - qu
* Romansh - rm
* Romanian - ro
* Serbian (Latin script) - sr-Latn
* Slovak - sk
* Slovenian - sl
* Albanian - sq
* Swedish - sv
* Swahili - sw
* Tagalog - tl
* Turkish - tr
* Uzbek - uz
* Vietnamese - vi

#### Cyrillic

* Russian - ru
* Belarusian - be
* Ukrainian - uk
* Serbian (Cyrillic script) - sr-Cyrl
* Bulgarian - bg
* Mongolian - mn
* Abaza - abq
* Adyghe - ady
* Kabardian - kbd
* Avar - av
* Dargwa - dar
* Ingush - inh
* Chechen - ce
* Lak - lbe
* Lezghian - lez
* Tabasaran - tab
* Kazakh - kk
* Kyrgyz - ky
* Tajik - tg
* Macedonian - mk
* Tatar - tt
* Chuvash - cv
* Bashkir - ba
* Meadow Mari - mhr
* Moldovan / Moldavian - mo
* Udmurt - udm
* Komi - kv
* Ossetian - os
* Buryat - bua
* Kalmyk / Oirat - xal
* Tuvan - tyv
* Yakut / Sakha - sah
* Karakalpak - kaa

{% hint style="info" %}
**Info**

Text orientation detection is not supported.
{% endhint %}

#### CJK

* Simplified Chinese - zh
* Traditional Chinese - zh-Hant
* Japanese - ja
* Korean - ko

{% hint style="info" %}
**Info**

Text orientation detection is not supported for Korean language. Korean language can’t be mixed with the rest of the group.
{% endhint %}

#### Devanagari

* Hindi - hi
* Marathi - mr
* Nepali - ne
* Bihari - bh
* Maithili - mai
* Angika - anp
* Bhojpuri - bho
* Magahi - mag
* Sadri / Nagpuri - sck
* Newari / Nepal Bhasa - new
* Konkani - gom
* Sanskrit - sa
* Bagri - bgc

{% hint style="info" %}
**Info**

Text orientation detection is not supported.
{% endhint %}

#### Arabic

* Arabic - ar
* Persian (Farsi) - fa
* Uyghur - ug
* Urdu - ur
* Pashto - ps
* Kurdish - ku
* Sindhi - sd
* Balochi - bal

{% hint style="info" %}
**Info**

Text orientation detection is not supported.
{% endhint %}

#### Other

* Greek - el
* Georgian - ka
* Tamil - ta
* Telugu - te
* Thai - th

{% hint style="info" %}
**Info**

These languages can’t be mixed.
{% endhint %}

### Supported Languages for Alternative OCR

* English - eng
* French - fra
* German - deu
* Italian - ita
* Spanish - spa
* Russian - rus

### Supported Languages for IRIS OCR

* English - eng
* French - fra
* German - deu
* Italian - ita
* Spanish - spa
* Russian - rus
* Simplified Chinese - chi\_sim
* Traditional Chinese - chi\_tra
* Japanese - jpn
* Korean - kor

### Mixing Languages

{% hint style="info" %}
**Info**

You can include more than one language in the same document (for example, English + Arabic). The OCR engine can recognize mixed-language content as long as the selected languages are supported and follow the rules for mixing languages.
{% endhint %}

**Rules:**

* You can mix English with any other language.
* You can mix languages that belong to the same script grouping. For example, you may mix any of the Latin languages.
* Any other mixing of languages will result in an error.
* Korean can only be mixed with the English language.
* Languages in the Other group can’t be mixed with each other, and can only be mixed with English language.

## Get started

In this section, we showcase typical OCR workflows.

[OCR workflow](/core/ocr/workflow.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.apryse.com/core/ocr/ocr.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
