OCR Service Pricing — Internal Document
CONFIDENTIAL — Do not share with client
Team
| Role |
Person |
| Business & client relations |
Justin |
| Developer |
Darren |
| Developer |
Sean |
Tech Stack Options & Cost Matrix
OCR Layer
| Option |
Type |
Cost |
Notes |
| Chandra (datalab.to) |
Hosted API |
~$0.005/page (est.) |
Best accuracy, proprietary improvements over open-source. $5 free credits on signup. Exact pricing behind login |
| Chandra (self-hosted) |
Self-hosted |
GPU server cost only |
Open-source weights from HuggingFace. Needs GPU (L40S or similar) |
| PaddleOCR-VL (WaveSpeed) |
Hosted API |
$0.005/page (~RM 0.022) |
Confirmed pricing. 0.9B model, 109 languages, JSON/Markdown output |
| PaddleOCR (self-hosted) |
Self-hosted |
CPU server cost only |
Can run on CPU — no GPU needed. Lighter model, lower accuracy |
NLP Layer (via OpenRouter)
Budget picks (best value for structured extraction):
| Model |
Input $/1M |
Output $/1M |
Context |
Est. cost/page |
Notes |
| Gemini 2.0 Flash |
$0.10 |
$0.40 |
1M |
~$0.0003 |
Proven, fast, huge context |
| Gemini 2.0 Flash Lite |
$0.075 |
$0.30 |
1M |
~$0.0002 |
Even cheaper, slightly less capable |
| Gemini 2.5 Flash Lite |
$0.10 |
$0.40 |
1M |
~$0.0003 |
Newer, same price as 2.0 Flash |
| Qwen3.5 Flash |
$0.065 |
$0.26 |
1M |
~$0.0002 |
Cheapest non-free option |
| Qwen3.6 Plus Preview |
FREE |
FREE |
1M |
$0 |
Free while in preview — use it while it lasts |
| MiniMax M2.5 (free) |
FREE |
FREE |
196k |
$0 |
Free tier available |
| DeepSeek V3.1 |
$0.15 |
$0.75 |
32k |
~$0.0005 |
Good reasoning, smaller context |
| DeepSeek V3.2 |
$0.26 |
$0.38 |
163k |
~$0.0004 |
Very cheap output |
Mid-range (if we need better reasoning):
| Model |
Input $/1M |
Output $/1M |
Context |
Est. cost/page |
Notes |
| Qwen3 32B |
$0.08 |
$0.24 |
40k |
~$0.0002 |
Good balance |
| Kimi K2 0905 |
$0.40 |
$2.00 |
131k |
~$0.001 |
Strong reasoning |
| Gemini 2.5 Flash |
$0.30 |
$2.50 |
1M |
~$0.002 |
Best Gemini thinking model |
| MiniMax M2.5 |
$0.18 |
$1.10 |
196k |
~$0.0007 |
Good value mid-range |
NLP cost/page estimate assumes: ~500 input tokens (OCR text from one page) + ~200 output tokens (structured JSON). Actual varies by document complexity.
Infrastructure
| Option |
Specs |
Monthly (EUR) |
Monthly (RM) |
Use case |
| Hetzner AX42 |
Ryzen 7 PRO 8700GE, 64GB DDR5, 2×512GB NVMe |
€46 |
~RM 220 |
App server, PaddleOCR on CPU |
| Hetzner AX52 |
Ryzen 7 7700, 64GB DDR5, 2×1TB NVMe |
€59 |
~RM 280 |
Better app server, heavier OCR on CPU |
| Hetzner AX102 |
Ryzen 9 7950X3D, 128GB DDR5, 2×1.92TB NVMe |
€104 |
~RM 500 |
High-throughput CPU OCR |
| Hetzner GEX44 |
i5-13500 + RTX 4000 SFF 20GB, 64GB DDR4, 2×1.92TB NVMe |
€212 |
~RM 1,010 |
GPU for Chandra self-hosted |
| Minimal VPS |
Any small cloud VM (app server only, OCR via API) |
~€5-10 |
~RM 25-50 |
If using hosted OCR APIs only |
Stack Combinations & Cost Per Page
All-API stacks (no server for OCR)
| # |
OCR |
NLP |
Infra |
Cost/page |
Monthly cost @10k pages |
Monthly cost @30k pages |
| A1 |
PaddleOCR (WaveSpeed) |
Gemini 2.0 Flash |
Minimal VPS |
RM 0.024 |
RM 290 |
RM 770 |
| A2 |
PaddleOCR (WaveSpeed) |
Qwen3.5 Flash |
Minimal VPS |
RM 0.023 |
RM 280 |
RM 740 |
| A3 |
PaddleOCR (WaveSpeed) |
Qwen3.6 Plus (FREE) |
Minimal VPS |
RM 0.022 |
RM 270 |
RM 710 |
| A4 |
PaddleOCR (WaveSpeed) |
MiniMax M2.5 (FREE) |
Minimal VPS |
RM 0.022 |
RM 270 |
RM 710 |
| A5 |
Chandra (hosted) |
Gemini 2.0 Flash |
Minimal VPS |
~RM 0.024 |
~RM 290 |
~RM 770 |
| A6 |
Chandra (hosted) |
Qwen3.6 Plus (FREE) |
Minimal VPS |
~RM 0.022 |
~RM 270 |
~RM 710 |
A3/A4/A6 are the cheapest possible stacks — free NLP + cheap OCR API. Cost is almost entirely the OCR API call.
Hybrid stacks (self-hosted OCR + API NLP)
| # |
OCR |
NLP |
Infra |
Cost/page @10k/mo |
Cost/page @30k/mo |
Monthly cost @10k |
Monthly cost @30k |
| B1 |
PaddleOCR (self-hosted CPU) |
Gemini 2.0 Flash |
AX42 (RM 220) |
RM 0.023 |
RM 0.008 |
RM 230 |
RM 230 |
| B2 |
PaddleOCR (self-hosted CPU) |
Qwen3.6 Plus (FREE) |
AX42 (RM 220) |
RM 0.022 |
RM 0.007 |
RM 220 |
RM 220 |
| B3 |
Chandra (self-hosted GPU) |
Gemini 2.0 Flash |
GEX44 (RM 1,010) |
RM 0.101 |
RM 0.034 |
RM 1,013 |
RM 1,019 |
| B4 |
Chandra (self-hosted GPU) |
Qwen3.6 Plus (FREE) |
GEX44 (RM 1,010) |
RM 0.101 |
RM 0.034 |
RM 1,010 |
RM 1,010 |
B1/B2 are the sweet spot for scale. Fixed server cost means per-page cost drops as volume increases. At 30k pages/mo, self-hosted PaddleOCR is 3× cheaper than API.
Fully self-hosted (maximum control)
| # |
OCR |
NLP |
Infra |
Monthly cost |
Notes |
| C1 |
PaddleOCR (CPU) |
Local Qwen3 32B |
AX102 (RM 500) |
RM 500 flat |
Zero variable cost. Needs testing if AX102 can handle both |
| C2 |
Chandra (GPU) |
Local model on same GPU |
GEX44 (RM 1,010) |
RM 1,010 flat |
Zero variable cost. GPU shared between OCR and NLP |
C1/C2 have zero marginal cost per page — pure fixed cost. Best margins at high volume but requires ops effort and testing.
Recommended Stacks by Scenario
| Scenario |
Recommended |
Why |
Cost/page |
| Start / MVP / pilot |
A3 (PaddleOCR API + free Qwen3.6) |
Zero infra, lowest risk, instant start |
RM 0.022 |
| Production (low volume <10k/mo) |
A1 (PaddleOCR API + Gemini 2.0 Flash) |
Reliable, proven, still cheap |
RM 0.024 |
| Production (high volume 20k+/mo) |
B1 (PaddleOCR self-hosted + Gemini Flash) |
Fixed server cost amortizes, cheapest at scale |
RM 0.008 |
| Best accuracy needed |
A5 or B3 (Chandra + Gemini) |
Chandra has best OCR accuracy for complex docs |
RM 0.024–0.034 |
| Maximum margin |
C1 (fully self-hosted) |
Zero variable cost, RM 500/mo flat |
RM 0.017 @30k |
Client Pricing (what HHH sees)
Subscription Tiers (Annual)
|
Starter |
Growth |
Enterprise |
| Pages/year |
50,000 |
150,000 |
350,000 |
| Client pays/page |
RM 0.20 |
RM 0.15 |
RM 0.11 |
| Annual sub |
RM 10,000 |
RM 22,500 |
RM 38,500 |
Credit Packs (expiring)
| Credits |
Client rate |
Our cost (stack A1) |
Margin/page |
Validity |
| 5,000 |
RM 0.28 |
RM 0.024 |
RM 0.256 (91%) |
14 days |
| 10,000 |
RM 0.22 |
RM 0.024 |
RM 0.196 (89%) |
30 days |
| 25,000 |
RM 0.18 |
RM 0.024 |
RM 0.156 (87%) |
60 days |
| 50,000 |
RM 0.15 |
RM 0.024 |
RM 0.126 (84%) |
90 days |
Setup & Service Fees
| Fee |
Amount |
Our actual cost |
Notes |
| One-time setup |
RM 12,000 |
~RM 0 (our time) |
Pure profit — system is fast to build |
| Annual service |
RM 6,000 |
~RM 0 (minimal effort) |
Monitoring + occasional calls |
Profit Matrix — All Combinations
Variables
- Tier: Starter (50k pages) / Growth (150k pages) / Enterprise (350k pages)
- Duration: 1-year / 2-year (10% sub discount)
- Stack: A1 (RM 0.024/page) / B1 @30k/mo (RM 0.008/page) / C1 flat (RM 500/mo)
- Credit purchases: None / Low (~RM 3k/yr) / Medium (~RM 8k/yr)
1-Year Deals
| Tier |
Stack |
Revenue (sub + setup + service) |
+ Credits (med) |
Our cost/yr |
Profit (no credits) |
Profit (med credits) |
Per person |
| Starter |
A1 |
RM 28,000 |
+RM 8,000 |
RM 3,250 |
RM 24,750 |
RM 32,550 |
RM 8,250–10,850 |
| Starter |
B1 |
RM 28,000 |
+RM 8,000 |
RM 3,040 |
RM 24,960 |
RM 32,760 |
RM 8,320–10,920 |
| Starter |
C1 |
RM 28,000 |
+RM 8,000 |
RM 6,000 |
RM 22,000 |
RM 29,800 |
RM 7,330–9,930 |
| Growth |
A1 |
RM 40,500 |
+RM 8,000 |
RM 6,150 |
RM 34,350 |
RM 42,150 |
RM 11,450–14,050 |
| Growth |
B1 |
RM 40,500 |
+RM 8,000 |
RM 3,040 |
RM 37,460 |
RM 45,260 |
RM 12,490–15,090 |
| Growth |
C1 |
RM 40,500 |
+RM 8,000 |
RM 6,000 |
RM 34,500 |
RM 42,300 |
RM 11,500–14,100 |
| Enterprise |
A1 |
RM 56,500 |
+RM 8,000 |
RM 11,150 |
RM 45,350 |
RM 53,150 |
RM 15,120–17,720 |
| Enterprise |
B1 |
RM 56,500 |
+RM 8,000 |
RM 3,040 |
RM 53,460 |
RM 61,260 |
RM 17,820–20,420 |
| Enterprise |
C1 |
RM 56,500 |
+RM 8,000 |
RM 6,000 |
RM 50,500 |
RM 58,300 |
RM 16,830–19,430 |
2-Year Deals (10% off subscription)
| Tier |
Stack |
Revenue (sub + setup + service) |
+ Credits (med) |
Our cost/2yr |
Profit (no credits) |
Profit (med credits) |
Per person |
| Starter |
A1 |
RM 42,000 |
+RM 16,000 |
RM 6,100 |
RM 35,900 |
RM 51,700 |
RM 11,970–17,230 |
| Starter |
B1 |
RM 42,000 |
+RM 16,000 |
RM 5,680 |
RM 36,320 |
RM 52,120 |
RM 12,110–17,370 |
| Growth |
A1 |
RM 64,500 |
+RM 16,000 |
RM 11,900 |
RM 52,600 |
RM 68,400 |
RM 17,530–22,800 |
| Growth |
B1 |
RM 64,500 |
+RM 16,000 |
RM 5,680 |
RM 58,820 |
RM 74,620 |
RM 19,610–24,870 |
| Growth |
C1 |
RM 64,500 |
+RM 16,000 |
RM 12,000 |
RM 52,500 |
RM 68,300 |
RM 17,500–22,770 |
| Enterprise |
A1 |
RM 93,300 |
+RM 16,000 |
RM 21,900 |
RM 71,400 |
RM 87,200 |
RM 23,800–29,070 |
| Enterprise |
B1 |
RM 93,300 |
+RM 16,000 |
RM 5,680 |
RM 87,620 |
RM 103,420 |
RM 29,210–34,470 |
| Enterprise |
C1 |
RM 93,300 |
+RM 16,000 |
RM 12,000 |
RM 81,300 |
RM 97,100 |
RM 27,100–32,370 |
RM 25k/person Target — Where It Hits
| Combination |
Per person (with medium credits) |
Hits RM 25k? |
| 2yr Growth + B1 stack |
RM 24,870 |
~Yes |
| 2yr Enterprise + A1 stack |
RM 29,070 |
Yes |
| 2yr Enterprise + B1 stack |
RM 34,470 |
Yes |
| 2yr Enterprise + C1 stack |
RM 32,370 |
Yes |
| 1yr Enterprise + B1 + 2nd year renewal |
RM 20,420 × 2 = RM 40k+ |
Yes |
Best path: Close HHH on 2-year Growth or Enterprise with B1 stack (self-hosted PaddleOCR + Gemini Flash on Hetzner AX42). Lowest operating cost, highest margin.
CR Digital Comparison
| Volume |
CR Digital |
Us |
HHH saves |
| 50k pages |
RM 16,000 (incl RM 6k license) |
RM 10,000 |
37% cheaper |
| 150k pages |
RM 28,500 |
RM 22,500 |
21% cheaper |
| 350k pages |
RM 58,500 |
RM 38,500 |
34% cheaper |
Our advantages:
- No RM 6,000/yr platform license fee
- Support included, not extra
- Better accuracy (Chandra + NLP vs their generic OCR)
- Smaller team = more responsive, more accountable
- Personal relationship with boss's son
Their advantages (prepare for objections):
- Established company (we're a 3-person team)
- Possibly more features / dashboard / UI
- "Safe" enterprise choice
Negotiation Playbook
| HHH says |
We respond |
| "CR Digital is cheaper" |
They're not — show the license fee and support costs they hide |
| "Can you lower the per-page rate?" |
Offer 2-year commitment for 10% off instead |
| "We need a trial first" |
Offer 1-month pilot at Starter rate (RM 833) — low risk for them, proves our accuracy |
| "Setup fee is too much" |
Waive it for 2-year Enterprise commitment |
| "We only need 50k pages" |
Start on Starter — when they exceed, credits kick in and push them to Growth |
| "We'll think about it" |
Remind them every month of manual entry = staff cost + errors |
Notes
- Free NLP models (Qwen3.6 Plus, MiniMax M2.5) are temporary — they will eventually be priced. Use them for MVP/pilot, budget Gemini 2.0 Flash for production costing.
- PaddleOCR is less accurate than Chandra for complex layouts (tables, handwriting). For DOs which are mostly structured forms, PaddleOCR is likely sufficient.
- Stack B1 is the recommended production stack. Hetzner AX42 at RM 220/mo running PaddleOCR + Gemini 2.0 Flash via OpenRouter gives the best cost/reliability/margin balance.
- All prices sourced March 2026. OpenRouter prices fluctuate. Hetzner prices increase April 1, 2026.