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 requires some external libraries to run. On Debian/Ubuntu they may be installed using:

# apt install libpangocairo-1.0 libxml2 libblas3 liblapack3 python3-dev python3-pip libvips


$ pip3 install kraken

or by running pip in the git repository:

$ pip3 install .


Install the latest development version through conda:

$ wget
$ conda env create -f environment.yml


$ wget
$ conda env create -f environment_cuda.yml

for CUDA acceleration with the appropriate hardware.


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.