Tesseract is an open-source engine for optical character recognition. It combines image analysis with trained recognition data to extract text from images. Its documentation describes a command-line interface and a programming interface, with recognition data for different writing systems. A language choice affects the model used; it does not translate the recognized text.[ref]
Tesseract User Manual by the Tesseract project. Introduction and Usage; Command Line Usage, Using One Language
For example, the documented command
tesseract scan.png result -l eng reads an image, selects English recognition data and writes text to result.txt. The output basename is result, so the filename extension is supplied by the selected output format. Adding pdf requests a PDF containing the page image and a searchable text layer. If recognition confuses a letter in the image, searching that text layer can still miss the intended word.[ref]Tesseract User Manual by the Tesseract project. Command Line Usage, Simplest Invocation, Using One Language and Searchable pdf output
The architecture has changed over its history. Ray Smith's 2007 paper describes an engine that groups connected image outlines into lines and words, then recognizes them in successive passes. Version 4 introduced recognition based on long short-term memory neural networks; the 5.x manual documents this engine alongside the legacy option.[ref]
An Overview of the Tesseract OCR Engine by Ray Smith. §2, printed p. 629, architecture and recognition passes
[ref]Tesseract User Manual by the Tesseract project. Tesseract with LSTM; Command Line Usage, Available OCR Engines in Tesseract 5
A useful test compares output with a checked transcription using character error rate, while also inspecting omitted regions and reading order. Recognition accuracy depends on image quality, layout and matching language data. Installing the engine alone does not establish the accuracy of a particular scanned collection.
New to topics? Read the docs here!