Skip to content
This repository has been archived by the owner on Apr 8, 2022. It is now read-only.

SwiftyTesseract/libtesseract

Repository files navigation

libtesseract

Swift Tools Version Badge ios platform badge catalyst platform badge macOS platform badge Build

This library is no longer maintained and will see no further updates.

If you need OCR support in your application, I suggest you use the first party option by using the Text Recognition capabilities of Apple's Vision framework. If your language is not supported by Apple, I suggest you fork this project and maintain it yourself. If you need assistance migrating to another solution or in maintaining your own fork, you or your company can reach out to me to arrange a contract agreement.


This repo contains build scripts to compile Tesseract and it's dependencies for Apple platforms to be distributed as a Swift package. It's primary goal is to aid in migrating SwiftyTesseract to be consumable as a Swift Package Manager dependency. If you're looking for looking for a quick way to get started with using Tesseract in your Apple platform application without the rough edges of memory management and dealing with C interop, then you should start with SwiftyTesseract.

Installation

Add libtesseract as a Swift Package Dependency

// Package.swift
// swift-tools-version:5.3
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription

let package = Package(
  name: "AwesomePackage",
  platforms: [
    // These are the minimum versions libtesseract supports
    .macOS(.v10_13),
    .iOS(.v11),
  ],
  products: [
    .library(
      name: "AwesomePackage",
      targets: ["AwesomePackage"]
    ),
  ],
  dependencies: [
    .package(url: "https://github.com/SwiftyTesseract/libtesseract.git", from: "0.2.0")
  ],
  targets: [
    .target(
      name: "AwesomePackage",
      dependencies: ["libtesseract"],
      linkerSettings: [.linkedLibrary("z"), .linkedLibrary("c++")]
    ),
  ]
)

// AwesomePackage.swift
import libtesseract

Additional Required Configuration

You must link against the following libraries:

  • libc++
  • libz

This can be done in an Xcode-based project by adding these in Build Phases -> Link Binary with Libaries screenshot of xcode linking libc++ and libz

In a Swift Package Manager project, this can be achieved by adding the following to your target linkerSettings:

// See Package.swift example above for full context
  targets: [
    .target(
      name: "AwesomePackage",
      dependencies: ["libtesseract"],
      linkerSettings: [.linkedLibrary("z"), .linkedLibrary("c++")]
    ),
  ]

See SwiftyTesseract's Additonal Configuration notes on considerations for including language training data files.

Build dependencies

If you want to build libtesseract from source, you need automake, pkg-config, and task installed on your machine. These can be installed via homebrew:

brew install automake pkg-config go-task/tap/go-task

To build a library for distribution run task build-tesseract-xcframework-zip

Attributions

libtesseract disributes the following dependencies in binary form: