# Leptess

[![Test](https://github.com/houqp/leptess/actions/workflows/test.yml/badge.svg)](https://github.com/houqp/leptess/actions/workflows/test.yml)
[![Crates.io](https://img.shields.io/crates/v/leptess.svg)](https://crates.io/crates/leptess)
[![Docs](https://img.shields.io/badge/rust-docs-blue.svg)](https://houqp.github.io/leptess/leptess/index.html)

Productive and safe Rust bindings/wrappers for Tesseract and Leptonica.

## Build dependencies

Make sure you have clang, Leptonica and Tesseract installed.

Tesseract should be version 4.0.0 or above.

### Ubuntu

```bash
sudo apt-get install libleptonica-dev libtesseract-dev clang
```

You will also need to install tesseract language data based on your OCR needs:

```bash
sudo apt-get install tesseract-ocr-eng
```

### Mac

```bash
brew install tesseract leptonica
```

### Windows

On Windows, this library uses Microsoft's [vcpkg](https://github.com/microsoft/vcpkg) to provide tesseract.

Please install [vcpkg](https://github.com/microsoft/vcpkg) and **set up user wide integration** or [vcpkg crate](https://crates.io/crates/vcpkg) won't be able to find the library.

To install tesseract:

```cmd
REM from the vcpkg directory

REM 32 bit
.\vcpkg install tesseract:x86-windows

REM 64 bit
.\vcpkg install tesseract:x64-windows
```

To run the tests configure vcpkg-crate to find the tesseract library:

```cmd
SET VCPKGRS_DYNAMIC=true
cargo test
```

## Usage

```rust
let mut lt = leptess::LepTess::new(None, "eng").unwrap();
lt.set_image("path/to/page.bmp");
println!("{}", lt.get_utf8_text().unwrap());
```

For more examples, see [docs](https://houqp.github.io/leptess/leptess/index.html) and `examples` directory.

To run demos in `examples` directory, try:

```bash
cargo run --example low_level_ocr_full_page
```

## Development

To run tests, you will need at Tesseract 4.x or 5.x to match what we have in
`tests/tessdata/eng.traineddata`. See GitHub config actions to see how to replicate
the setup.
