kraken is a turn-key OCR system optimized for historical and non-Latin script material.


kraken’s main features are:

Pull requests and code contributions are always welcome.


Kraken can be run on Linux or Mac OS X (both x64 and ARM). Installation through the on-board pip utility and the anaconda scientific computing python are supported.

Installation using Pip

$ pip install kraken

or by running pip in the git repository:

$ pip install .

If you want direct PDF and multi-image TIFF/JPEG2000 support it is necessary to install the pdf extras package for PyPi:

$ pip install kraken[pdf]


$ pip install .[pdf]


Installation using Conda

To install the stable version through conda:

$ conda install -c conda-forge -c mittagessen kraken

Again PDF/multi-page TIFF/JPEG2000 support requires some additional dependencies:

$ conda install -c conda-forge pyvips

The git repository contains some environment files that aid in setting up the latest development version:

$ git clone git://
$ cd kraken
$ conda env create -f environment.yml


$ git clone git://
$ cd kraken
$ conda env create -f environment_cuda.yml

for CUDA acceleration with the appropriate hardware.

Finding Recognition Models

Finally you’ll have to scrounge up a recognition model to do the actual recognition of characters. To download the default English text recognition model and place it in the user’s kraken directory:

$ kraken get 10.5281/zenodo.2577813

A list of libre models available in the central repository can be retrieved by running:

$ kraken list

Model metadata can be extracted using:

$ kraken show 10.5281/zenodo.2577813
name: 10.5281/zenodo.2577813

A generalized model for English printed text

This model has been trained on a large corpus of modern printed English text\naugmented with ~10000 lines of historical p
scripts: Latn
alphabet: !"#$%&'()+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]`abcdefghijklmnopqrstuvwxyz{} SPACE
accuracy: 99.95%
license: Apache-2.0
author(s): Kiessling, Benjamin
date: 2019-02-26


Recognizing text on an image using the default parameters including the prerequisite steps of binarization and page segmentation:

$ kraken -i image.tif image.txt segment -bl ocr
Loading RNN     ✓
Processing      ⣻

To binarize a single image using the nlbin algorithm (usually not required with the baseline segmenter):

$ kraken -i image.tif bw.tif binarize

To segment a binarized image into reading-order sorted baselines and regions:

$ kraken -i bw.tif lines.json segment -bl

To OCR an image using the default RNN:

$ kraken -i bw.tif image.txt segment -bl ocr

All commands and their parameters are documented, just add the standard --help flag for further information.

Training Tutorial

There is a training tutorial at Training kraken.


Kraken is provided under the terms and conditions of the Apache 2.0 License.


kraken is developed at the École Pratique des Hautes Études, Université PSL.

This project was partially funded through the RESILIENCE project, funded from the European Union’s Horizon 2020 Framework Programme for Research and Innovation.

Co-financed by the European Union