MCP server for OCR using native Tesseract (C++), built with Node.js, delivering high-performance OCR and integrable with ChatGPT Desktop.
🚧 Work in Progress 🚧
- High-performance OCR via native Tesseract (C++)
- Node.js MCP server wrapper for easy integration
- Compatible with ChatGPT Desktop and other MCP clients
- Benchmark vs tesseract.js
- Step 1: C++ OCR CLI tool
- Step 2: Node.js MCP server wrapper
- Step 3: ChatGPT Desktop configuration guide
- Step 4: Benchmark results
- Step 5: Demo video
- C++ (Tesseract OCR)
- Node.js + TypeScript (@modelcontextprotocol/sdk)
- JSON-RPC 2.0 (MCP standard)
brew install tesseract
# Optional: install additional languages
brew install tesseract-lang
sudo apt update
sudo apt install tesseract-ocr libtesseract-dev libleptonica-dev
# Optional: install Vietnamese language
sudo apt install tesseract-ocr-vie
- Download installer from Tesseract OCR GitHub
- Or using Chocolatey:
choco install tesseract
- Add the installation path to your
PATH
environment variable.
git clone https://github.com/dangvinh/mcp-ocr-server.git
cd mcp-ocr-server/cpp
You can build the C++ OCR engine using the provided npm script. Run:
npm run build-core
This command will create the cpp/build-core
directory, configure the project with CMake, and build the static library and CLI tool.
libmcp_ocr.a
static libraryocr_cli
executable incpp/build-core/bin
(or equivalent)
# From the build directory
ctest --verbose
- This will run all GoogleTest-based tests.
- Ensure test images or resources exist in
cpp/tests
orexamples/
. - The setup works cross-platform (macOS, Linux, Windows).
The Node.js addon can be built using the provided npm script. Run:
npm run build-addon
This command runs node-gyp
inside the cpp/
directory and produces the compiled addon (ocr_addon.node
) inside cpp/build/Release/
. This addon is required for Node.js integration with the C++ core.
The OCR engine requires trained data files to work. Please follow these steps:
- Create a
tessdata
folder in the project root:
mkdir tessdata
- Download the English trained data:
wget https://github.com/tesseract-ocr/tessdata/raw/main/eng.traineddata -P tessdata/
-
For other languages, download the corresponding
.traineddata
files intotessdata/
. -
Ensure your
.env
or.env.example
has:
TESSDATA_PREFIX=./tessdata
OCR_LANG=eng
./ocr_cli path/to/image.png
Ensure the
tessdata
folder is accessible for language files. The project supports macOS, Linux, and Windows (cross-platform).