Skip to content
Meftun Akarsu
Computer vision · 2022

OCR engines compared

OCR · Benchmark · Python package

A benchmark that runs Tesseract, EasyOCR, RapidOCR, PaddleOCR and keras-ocr on the same images and reports what each read, how fast and how confidently.

Black and white view of loose letterpress blocks with raised letters and numerals, scattered in a wooden tray
Photo: Taso Katsionis / Unsplash

Overview

A tool that runs several OCR engines over the same images and reports what each one read, how long it took and how confident it was, so the trade-offs can be seen rather than read about. I first wrote it in 2022 to compare keras-ocr, EasyOCR and Tesseract, and later turned it into a small package with RapidOCR and PaddleOCR in the line-up.

How it works

Each engine is an optional extra, so you install only the ones you want to run. Every engine returns the same shape, a text box with its text, polygon and confidence, so adding an engine means writing one small adapter and registering it. A command-line tool picks the engines and languages, prints a table of boxes, time per image and mean confidence, and can save a comparison figure or write JSON. The tests run without any engine installed and download nothing.

What it showed

In the original run Tesseract was not good at finding text in a whole image, so the text should be detected first, keras-ocr was accurate but slow on a CPU, and EasyOCR was a good all-rounder that coped with noise and did well on receipts and PDFs. Since then keras-ocr has stopped being maintained, so it sits behind its own extra, and PaddleOCR is listed with the strongest accuracy in the line-up. The right engine still depends on your images.

Built with

Python · Tesseract · EasyOCR · RapidOCR · PaddleOCR · keras-ocr · pytest

← All projects