Go package for OCR (Optical Character Recognition), by using Tesseract C++ library
See the codeGolang OCR package, by using Tesseract C++ library.
If you need an OCR server or want to see a working example of this package, there is a ready-made server application, which is very easy to deploy!
👉 https://github.com/otiai10/ocrserver
package main
import (
"fmt"
"github.com/otiai10/gosseract/v2"
)
func main() {
client := gosseract.NewClient()
defer client.Close()
client.SetImage("path/to/image.png")
text, _ := client.Text()
fmt.Println(text)
// Hello, World!
}
brew install tesseract
go get -t github.com/otiai10/gosseract/v2
sudo apt-get install -y libtesseract-dev libleptonica-dev tesseract-ocr-eng
go get -t github.com/otiai10/gosseract/v2
Please check this Dockerfile to get started.
Alternatively, you can deploy the pre-existing Docker image by invoking docker run -it --rm otiai10/gosseract.
Windows support requires vcpkg and MinGW-w64:
# Install Tesseract via vcpkg
vcpkg install tesseract:x64-windows
# Create MinGW import libraries from vcpkg DLLs
cd C:/vcpkg/installed/x64-windows/bin
gendef tesseract55.dll leptonica-1.87.0.dll
dlltool -d tesseract55.def -l libtesseract.a -D tesseract55.dll
dlltool -d leptonica-1.87.0.def -l libleptonica.a -D leptonica-1.87.0.dll
mv *.a ../lib/
# Download language data
mkdir C:/tessdata
curl -L -o C:/tessdata/eng.traineddata https://github.com/tesseract-ocr/tessdata/raw/main/eng.traineddata
Set environment variables before building:
export CGO_ENABLED=1
export CC=C:/mingw64/bin/gcc.exe
export CGO_CFLAGS="-IC:/vcpkg/installed/x64-windows/include"
export CGO_LDFLAGS="-LC:/vcpkg/installed/x64-windows/lib"
export TESSDATA_PREFIX="C:/tessdata"
export PATH="/c/mingw64/bin:/c/vcpkg/installed/x64-windows/bin:$PATH"
For detailed troubleshooting, see knowledge/windows-support.md.
In case you have tesseract-ocr installed on your local environment, you can run the tests with:
% go test .
If you DON'T want to install tesseract-ocr on your local environment, run ./test/runtime which utilises Docker and Vagrant to test the source code on some runtimes.
% ./test/runtime --engine docker
% ./test/runtime --engine vagrant
Check ./test/runtimes for more information about runtime tests.
Note: Clear Linux support was removed in January 2026 as Intel discontinued the distribution in July 2025.
Note: Arch Linux support was removed in January 2026 as the official image does not provide ARM64 architecture support.
Overall
Maintained
Code review
Go module
Latest release
Releases this year
323 followers · starred Aug 2021
122 followers · starred Dec 2025
675 followers · starred Mar 2017
124 followers · starred Oct 2025
Go package for OCR (Optical Character Recognition), by using Tesseract C++ library
See the codeGolang OCR package, by using Tesseract C++ library.
If you need an OCR server or want to see a working example of this package, there is a ready-made server application, which is very easy to deploy!
👉 https://github.com/otiai10/ocrserver
package main
import (
"fmt"
"github.com/otiai10/gosseract/v2"
)
func main() {
client := gosseract.NewClient()
defer client.Close()
client.SetImage("path/to/image.png")
text, _ := client.Text()
fmt.Println(text)
// Hello, World!
}
brew install tesseract
go get -t github.com/otiai10/gosseract/v2
sudo apt-get install -y libtesseract-dev libleptonica-dev tesseract-ocr-eng
go get -t github.com/otiai10/gosseract/v2
Please check this Dockerfile to get started.
Alternatively, you can deploy the pre-existing Docker image by invoking docker run -it --rm otiai10/gosseract.
Windows support requires vcpkg and MinGW-w64:
# Install Tesseract via vcpkg
vcpkg install tesseract:x64-windows
# Create MinGW import libraries from vcpkg DLLs
cd C:/vcpkg/installed/x64-windows/bin
gendef tesseract55.dll leptonica-1.87.0.dll
dlltool -d tesseract55.def -l libtesseract.a -D tesseract55.dll
dlltool -d leptonica-1.87.0.def -l libleptonica.a -D leptonica-1.87.0.dll
mv *.a ../lib/
# Download language data
mkdir C:/tessdata
curl -L -o C:/tessdata/eng.traineddata https://github.com/tesseract-ocr/tessdata/raw/main/eng.traineddata
Set environment variables before building:
export CGO_ENABLED=1
export CC=C:/mingw64/bin/gcc.exe
export CGO_CFLAGS="-IC:/vcpkg/installed/x64-windows/include"
export CGO_LDFLAGS="-LC:/vcpkg/installed/x64-windows/lib"
export TESSDATA_PREFIX="C:/tessdata"
export PATH="/c/mingw64/bin:/c/vcpkg/installed/x64-windows/bin:$PATH"
For detailed troubleshooting, see knowledge/windows-support.md.
In case you have tesseract-ocr installed on your local environment, you can run the tests with:
% go test .
If you DON'T want to install tesseract-ocr on your local environment, run ./test/runtime which utilises Docker and Vagrant to test the source code on some runtimes.
% ./test/runtime --engine docker
% ./test/runtime --engine vagrant
Check ./test/runtimes for more information about runtime tests.
Note: Clear Linux support was removed in January 2026 as Intel discontinued the distribution in July 2025.
Note: Arch Linux support was removed in January 2026 as the official image does not provide ARM64 architecture support.
Overall
Maintained
Code review
Go module
Latest release
Releases this year
323 followers · starred Aug 2021
122 followers · starred Dec 2025
675 followers · starred Mar 2017
124 followers · starred Oct 2025