MCP OCR Server
by dangvinh
README.md
# MCP OCR Server
[](https://github.com/dangvinh/mcp-ocr-server/actions/workflows/ci.yml)
[](https://codecov.io/gh/dangvinh/mcp-ocr-server)
**MCP server for OCR using native Tesseract (C++), built with Node.js, delivering high-performance OCR and integrable with ChatGPT Desktop.**
š§ Work in Progress š§
## ⨠Features (planned)
- 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
## š Roadmap
- [ ] 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
## š§ Tech Stack
- C++ (Tesseract OCR)
- Node.js + TypeScript (@modelcontextprotocol/sdk)
- JSON-RPC 2.0 (MCP standard)
## š Installation
### 1. Install Tesseract OCR
#### macOS
```bash
brew install tesseract
# Optional: install additional languages
brew install tesseract-lang
```
#### Linux (Ubuntu/Debian)
```bash
sudo apt update
sudo apt install tesseract-ocr libtesseract-dev libleptonica-dev
# Optional: install Vietnamese language
sudo apt install tesseract-ocr-vie
```
#### Windows
- Download installer from [Tesseract OCR GitHub](https://github.com/tesseract-ocr/tesseract)
- Or using Chocolatey:
```powershell
choco install tesseract
```
- Add the installation path to your `PATH` environment variable.
### 2. Clone the repository
```bash
git clone https://github.com/dangvinh/mcp-ocr-server.git
cd mcp-ocr-server/cpp
```
### 3. Build the project with CMake
You can build the C++ OCR engine using the provided npm script. Run:
```bash
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.
#### What it builds:
- `libmcp_ocr.a` static library
- `ocr_cli` executable in `cpp/build-core/bin` (or equivalent)
#### Running tests
```bash
# From the build directory
ctest --verbose
```
- This will run all GoogleTest-based tests.
- Ensure test images or resources exist in `cpp/tests` or `examples/`.
- The setup works cross-platform (macOS, Linux, Windows).
### 4. Build the Node.js addon
The Node.js addon can be built using the provided npm script. Run:
```bash
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.
---
## š Setup tessdata
The OCR engine requires trained data files to work. Please follow these steps:
1. Create a `tessdata` folder in the project root:
```bash
mkdir tessdata
```
2. Download the English trained data:
```bash
wget https://github.com/tesseract-ocr/tessdata/raw/main/eng.traineddata -P tessdata/
```
3. For other languages, download the corresponding `.traineddata` files into `tessdata/`.
4. Ensure your `.env` or `.env.example` has:
```
TESSDATA_PREFIX=./tessdata
OCR_LANG=eng
```
---
### 4. Run OCR CLI
```bash
./ocr_cli path/to/image.png
```
> Ensure the `tessdata` folder is accessible for language files. The project supports macOS, Linux, and Windows (cross-platform).
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues