Getting started

You’ll need a (scientific) Python distribution and a database backend. Currently we use Elasticsearch as a backend.

numpy, PIL, skimage, etc.

image_match requires several scientific Python packages. Although they can be installed and built individually, they are often bundled in a custom Python distribution, for instance Anaconda. Installation instructions can be found here.

You can set up image_match without a prebuilt distribution, but the performance may suffer. Note that scipy and numpy require many system-level dependencies that you made need to install first.


If you just want to generate and compare image signatures, you can skip this step. If you want to search over a corpus of millions or billions of image signatures, you will need a database backend. We built image_match around Elasticsearch. See download and installation instructions. We’re using Elasticsearch 2.2.1 in these examples.

Install image-match

Here are a few options:

Install with pip

$ pip install numpy
$ pip install scipy
$ pip install image_match

Build from source

  1. Clone this repository:

    $ git clone
  2. Install image_match

    From the project directory:

    $ pip install numpy
    $ pip install scipy
    $ pip install .

Make sure elasticsearch is running (optional)

For example, on Ubuntu you can check with:

$ sudo service elasticsearch status

If it’s not running, simply run:

$ sudo service elasticsearch start

On OSX, to have launchd start elasticsearch, run :

$ brew services start elasticsearch

or simply run ,

$ elasticsearch


We have a Docker image that takes care of setting up image_match and elasticsearch. Consider it an alternative to the methods described above.

$ docker pull ascribe/image-match
$ docker run -it ascribe/image-match /bin/bash