Google Cloud Vision provides far superior handwriting recognition compared to Tesseract. Unless your handwriting is exceptionally clear and print-like, we strongly recommend using Google Vision.
| Feature | Google Vision | Tesseract |
|---|---|---|
| Handwriting | ✅ Excellent | ❌ Poor |
| Cursive | ✅ Handles well | ❌ Fails |
| Mixed content | ✅ Text + drawings | ❌ Confused |
| Languages | ✅ Auto-detect | Manual config |
| Setup | API key | System install |
The easiest way to get started:
- Go to Google Cloud Console
- Click Select a project → New Project
- Name it (e.g., "remarkable-ocr") and click Create
- Go to Cloud Vision API
- Click Enable
- Go to Credentials
- Click Create Credentials → API Key
- Copy the key
For security, restrict the API key:
- Click on the API key you just created
- Under API restrictions, select Restrict key
- Select only Cloud Vision API
- Click Save
Add the key to your MCP configuration:
{
"servers": {
"remarkable": {
"command": "uvx",
"args": ["remarkable-mcp", "--ssh"],
"env": {
"GOOGLE_VISION_API_KEY": "your-api-key-here"
}
}
}
}Google Cloud Vision pricing:
| Tier | Price |
|---|---|
| First 1,000 requests/month | Free |
| 1,001 - 5,000,000 requests | $1.50 per 1,000 |
For personal use, you'll likely stay within the free tier. Each notebook page counts as one request when OCR is enabled.
For production use or tighter security controls:
- Go to Service Accounts
- Click Create Service Account
- Name it and click Create
- Grant the role Cloud Vision API User
- Click Done
- Click on the service account
- Go to Keys tab
- Click Add Key → Create new key
- Select JSON and click Create
- Save the downloaded file securely
Point to your credentials file:
{
"servers": {
"remarkable": {
"command": "uvx",
"args": ["remarkable-mcp", "--ssh"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "/path/to/your/credentials.json"
}
}
}
}Or install the SDK with default credentials:
# Install gcloud CLI and authenticate
gcloud auth application-default login
# Install SDK dependency
pip install remarkable-mcp[ocr]| Variable | Description |
|---|---|
GOOGLE_VISION_API_KEY |
API key (simplest setup) |
GOOGLE_APPLICATION_CREDENTIALS |
Path to service account JSON |
REMARKABLE_OCR_BACKEND |
Force backend: auto, google, tesseract |
- Double-check the key is copied correctly
- Ensure the Vision API is enabled for your project
- Check that API restrictions (if any) include Vision API
- For service accounts, verify the Cloud Vision API User role
- Check that the credentials file path is correct
- You've exceeded the free tier
- Enable billing or wait until next month
- Consider caching results (remarkable-mcp does this automatically)
- Check
remarkable_status()to see which OCR backend is configured - Set
REMARKABLE_OCR_BACKEND=googleto force Google Vision - Ensure
include_ocr=Truewhen callingremarkable_read()
- Caching: OCR results are cached per document — reading multiple pages doesn't re-run OCR
- Selective OCR: Only enable
include_ocrwhen you need handwritten content - Typed text: Notebooks with Type Folio extract text without OCR
- PDFs: Text is extracted directly, OCR only needed for scanned documents
When using Google Vision:
- Your handwritten content is sent to Google's servers for processing
- Google's Cloud Vision Terms apply
- Consider this when processing sensitive documents
For fully offline OCR, use Tesseract (with significantly reduced accuracy for handwriting).