What makes it useful
Starlens reads document structure as well as characters. It keeps table rows together, returns amounts as numbers, and normalizes dates (including Thai Buddhist-era dates). It can read handwriting and pages with multiple languages. You choose the fields; Starlens returns them in your schema.How is it different from OCR?
Basic OCR returns text:TOTAL ฿482.00. Starlens can return total: 482 in a structured receipt, alongside the merchant and line items you asked for.
Starlens can read multiple pages and documents in different languages. It keeps extracted names in their original script. It does not match printed names to your app’s records or create those records.
Input and output examples
These illustrative requests use the SDK’s actual input shape:inputs for the file, instructions for document context, and a Zod schema with field descriptions. The outputs below show output and issues; the SDK also returns version and usage.
Receipt input: A phone photo shows ร้านครัวบ้าน, 3 ก.ย. 2569, ข้าวผัด 2 × ฿60, and รวม ฿120. receiptUrl is its signed file URL:
Acme Foods and total ฿1,250, but a thumb covers the tax ID. invoiceUrl is its signed file URL. The field descriptions give Starlens the printed labels and disambiguation:
Add it to your app
Ask the project agent to build the scan and review flow. For example:Handle uncertain results
If Starlens cannot read a field, it returnsnull and an issues entry with the field and reason. Ask for a clearer photo or let someone correct the draft from the source. A null without an issue can mean the field was absent.
An empty issues list is not a confidence guarantee. Check important amounts and IDs against the source before saving. If Starlens refuses the whole file, ask for the right document; do not save an empty record.
Test with a playground
Ask the project agent to build an extraction or eval playground in your app:For developers
Call@stardeck-customer-apps/starlens from server code with a pinned version (v1), a schema, and either publicly fetchable signed URLs or inline file bytes. The platform accepts up to 10 inputs and 40 MB total per request. The SDK returns output and issues, and raises UnsupportedDocumentError for a wrong document type. For the full API and error handling, see the package’s SKILL.md in your app and The SDKs.