NCB Credit Report OCR
Reads a National Credit Bureau report and returns the report's metadata, the data owner's identity, and a summary per credit account.
/ocr/v3/ncb-credit-report/fileTry it- Price1 ICper page
- Measured95.6%
- Served29Kcalls
Input

OutputPOST /ocr/v3/ncb-credit-report/file
- report_number
- 123456789
- reference_number
- MOBILE_APP-001
- query_date
- 24 ต.ค. 2562 11:09:43
- id_card_number
- 1100000000001
- full_name
- นาย สมชาย ตัวอย่าง
- date_of_birth
- 11 เม.ย. 2529
- total_accounts
- 6
- accounts_under_dispute
- 0
- accounts
- lender_name: ธนาคารตัวอย่าง credit_type: สินเชื่อที่อยู่อาศัย account_status: ปกติ credit_limit: 3000000 outstanding_balance: 2500000
Request
multipart/form-data only; there is no Base64 form. Every page of a PDF is read and billed.
Headers
apikeystringrequiredBody
filefilerequiredreturn_ocrbooleantrue to include the raw OCR text.target_langstringth, the default, en, or auto to keep the document's own language.include_confidencebooleantrue: a confidence from 0.00 to 1.00 per field./v3/store/ocr/ncb-credit-report is the same endpoint under the store prefix.
Response
The iapp-input-pages header carries the number of pages billed.
docsarrayOne entry per document read
docs.processedobjectThe fields read from the document
docs.processed.report_numberdocs.processed.reference_numberdocs.processed.query_datestringdocs.processed.id_card_numberdocs.processed.full_namedocs.processed.date_of_birthdocs.processed.total_accountsdocs.processed.accounts_under_disputedocs.processed.accountsarrayOne entry per account
docs.processed.accounts.lender_namestringdocs.processed.accounts.credit_typestringdocs.processed.accounts.account_statusstringdocs.processed.accounts.credit_limitintegerdocs.processed.accounts.outstanding_balanceintegerdocs.messagestringdocs.rawobjectdocs.confidenceobjectdocs.process_msintegerdocs_countintegerprocess_msintegerStatus codes
| Code | Meaning |
|---|---|
| 400 | Unsupported file extension, or a file over 50 MB |
| 404 | Unknown document type in the URL |
| 422 | No file attached |
| 500 | Processing error; the response carries a code to quote to support |
| 502 | Temporary processing failure, also when any page of a multi-page file fails (code: PROCESSING_FAILED). Not charged; retry |
| 503 | Service busy (PROCESSING_BUSY). Not charged; retry, after the seconds in Retry-After when that header is present |
| 504 | Processing timed out (PROCESSING_TIMEOUT). Not charged; retry |
Details
Measured
On the production service, 28 October 2026, against 40 synthetic credit bureau reports: every person, ID number and lender invented, every page watermarked "specimen", half degraded as office scans and half as phone photographs.
| Measure | Result |
|---|---|
| Report, identity and summary fields exactly right, 320 fields | 95.6% (95% CI 93.8–97.5) |
| Scan / phone photograph | 96.2% / 95.0% |
| Reports with every report, identity and summary field right | 65.0% |
| Account rows: lender, type, status, limit, balance (860 values) | 99.2% |
| Weakest field: reference number | 67.5% |
| All 11 business-document types in the benchmark, 5,092 fields | 97.9% |
| Median time per page through the API, 44 documents across the 11 types | 10.8 s (19.9 s at the 95th percentile) |
Most errors were in the reference number: an underscore came back as a space on 13 of the 14 reports that print one, so treat the two as equal when matching. The national ID number, dates and account counts were right on every report. Real reports score lower than this synthetic set. Method and every field: the benchmark (PDF).
Limits
- Only the fields above are extracted.
- Degraded scans, glare and handwriting over printed values lower accuracy. Prefer the original PDF, a square-on photograph in even light, or a scan at 300 dpi or more.
- The per-field confidence does not mark errors: across the 11 document types in the benchmark it averaged 0.957 on wrong fields and 0.967 on right ones, and 97.4% of wrong fields scored 0.90 or more. Choose fields for review with arithmetic checks (totals, VAT, balances) and identifier check digits instead.
Data handling
Consent and notice under PDPA and GDPR remain with you as the data controller.