A photograph of a Thai document, read out loud

Someone holds up a tax invoice, a hospital form, a letter from a government office. What they need is for it to be read to them, and that has always been two products that never met.

Text to speech assumes somebody already typed the words. Optical character recognition hands back a wall of text nobody wants to look at. Between them sits the thing that was actually being asked for, and building it has meant integrating two vendors who have never heard of each other.

Both halves are here, in one account, behind one key. A photograph goes in, and what comes back is words that can be spoken by a voice you chose, in the register the document deserves. That is the whole page, and it is the only thing on this site that neither model does alone.

One document, all the way through#

This is the specimen the OCR page publishes: a Thai tax invoice, typeset the way one actually looks. Below it is the model's own reading of it, captured and frozen, and below that is what the reading sounds like.

A Thai tax invoice, typeset as the specimen sheet.

What the model read

# บริษัท ศตวรรธการค้า จำกัด (สำนักงานใหญ่)
๙๙ ถนนพระราม ๙ แขวงห้วยขวาง เขตห้วยขวาง กรุงเทพมหานคร ๑๐๓๑๐
เลขประจำตัวผู้เสียภาษี 0 1055 64078 12 3

# ใบกำกับภาษี
TAX INVOICE

ต้นฉบับ
เล่มที่ 001 เลขที่ 0042
วันที่ ๓๐ มิถุนายน ๒๕๖๙

**ชื่อผู้ซื้อ** บริษัท กรุณาไทย จำกัด
**ที่อยู่** ๑๒๓ ซอยสุขุมวิท ๖๓ แขวงคลองตันเหนือ เขตวัฒนา กรุงเทพมหานคร ๑๐๑๑๐
**เลขประจำตัวผู้เสียภาษี** 0 1055 61045 67 8

| ลำดับ | รายการ | จำนวน | หน่วยละ | จำนวนเงิน |
| :--- | :--- | :--- | :--- | :--- |
|| เสื้อโปโลพนักงานปักโลโก้ | ๑๒ | 120.00 | 1,440.00 |
|| แก้วเซรามิกพิมพ์ลาย || 30.00 | 150.00 |
|| กล่องบรรจุภัณฑ์ || 20.00 | 60.00 |

| | | | รวมเงิน | 1,650.00 |
| :--- | :--- | :--- | :--- | :--- |
| | | | ภาษีมูลค่าเพิ่ม 7% | 115.50 |
| | | | จำนวนเงินรวมทั้งสิ้น | 1,765.50 |

( หนึ่งพันเจ็ดร้อยหกสิบห้าบาทห้าสิบสตางค์ )

...........................................................
ผู้รับเงิน

Captured verbatim, including anything it got wrong. Nothing here was corrected by hand.

What it sounds like

ใบกำกับภาษี เล่มที่ 001 เลขที่ 0042 วันที่ ๓๐ มิถุนายน ๒๕๖๙ จำนวนเงินรวมทั้งสิ้น หนึ่งพันเจ็ดร้อยหกสิบห้าบาทห้าสิบสตางค์

The document's own header and total, spoken. Thai numerals and an amount spelled out in words are the two things a Thai invoice makes hard, and both are in this line.

Three steps, one account#

The person taking the photograph does not need to know any of this. It is here because the person building it does.

  1. 01

    The photograph goes in

    A PDF or a photo from a phone, up to 50 pages. The format is detected from the bytes. Nothing has to be declared, and nothing has to be converted first.

  2. 02

    The reading comes back

    Markdown for something that will be spoken, or typed blocks when the structure matters. A form and a letter want different answers here, and asking for the right one saves the work of guessing later.

  3. 03

    The voice reads it

    The text goes to speech with a voice chosen for the length of the read. Nothing about that request knows it came from a photograph, which is why it is the same request as any other.

Both charges follow the same rule: the read is billed per page, the speech per character, and a failure on either side refunds itself.

Questions#

Does it read the layout, or just the words?
Both, and you choose. Markdown keeps headings, lists, and tables as text a voice can follow. Typed blocks hand back the same content with its structure intact, for when your app decides what to read and in what order.
What about a form with handwriting on it?
The reading is the model's, and it is returned as it came. Where a document is unclear the reading will be too. That is why the specimen above is published with its mistakes still in it.
How is this billed?
As two ordinary requests. Reading bills per page, speaking bills per character, and neither one charges for a request that failed.
Can this run on a phone?
The requests are ordinary HTTPS calls. The phone photographs and plays while your server makes the two calls between. Audio can stream, and the first words arrive before the whole page has been spoken.
Is this a substitute for a human reader?
No, and it is not offered as one. It is for the documents nobody was ever going to be available to read: the ones that arrive on a Tuesday afternoon and are needed before Wednesday.

Free credits, and no card

Sign in and the free grant covers a stack of documents read and spoken, which is enough to find out whether this works on the ones you actually have.