We got the best first reading of Lisan al-Dawat down to 4.87% character error on our three-page benchmark. GPT-6 Astra, with its thinking time set to high, came first. Claude Fable 5.1 was close at 4.93% and cost less than half as much per page.
For Alishraaq, that gives us a useful starting point: a draft that a reader can check against the book, with tools to catch recurring mistakes along the way.

Why we’re doing this
I’m building Alishraaq to make our community’s books and writing easier to read, search and study. Much of that material lives in scanned pages. You can look at a page, but searching for a phrase across a collection requires text the computer can actually read.
Lisan al-Dawat makes this work unusually demanding. It uses an Arabic-derived script for a language with Gujarati roots, and a page may move between Lisan al-Dawat and Arabic, with an English phrase in the middle. Small vowel marks and honorifics sit close to the letters. A model can produce a fluent sentence while changing what the page says.
We needed to know how much of the transcription a model could handle, what it would get wrong, and how much work would remain for someone who knows the language.
The full page was too much at once
Our early full-page attempts left out text and struggled with tiny marks. On one Sahifa test, GPT-5.5 returned just 432 characters against a reviewed transcription of 1,170. We were also running into the output limit. Sending the whole page in one go wasn’t giving us a usable reading.
Image size was part of the problem. DPI means dots per inch: it describes how densely a page is rendered. Pixels are the actual little squares that make up the image. A higher DPI setting can preserve more detail from a good source, but it cannot recover detail already lost in a blurry scan. One of our source scans was around 150 pixels per inch. Enlarging it made the blur bigger.
There was another place to lose detail. A model may shrink a tall page to fit its image limits. A tiny mark that looks clear when we zoom in on a monitor can become only a few pixels by the time the model reads it.
We split the page into three overlapping horizontal bands and sent them in reading order. Each band gave the text more room in the image. The overlap kept words near a cut visible in the next band, and we instructed the model to transcribe repeated lines only once. This helped with the small marks that full-page views were losing. An already blurred word still needed a better source or a human decision.
Full Technical Explanation
Our working process usually rendered pages at 300 DPI for a first reading and around 400 DPI for verification. The benchmark used the same saved image bands for every model and for both readings. For example, its Tohfat Lali page was 1,568 × 2,491 pixels, cut into three 1,568 × 943 bands with 170 pixels of overlap. Banding changes how much detail can survive later resizing; it adds no new detail to the source.
The early full-page probes used different prompts and preparation. They informed the workflow, but we did not run a controlled full-page-versus-bands comparison across this model roster. The benchmark therefore cannot put a percentage on the improvement from banding alone.
How we set up the test
We chose one page from each of three kinds of community writing: a sermon booklet, a historical reference book and a guide to worship. Here is exactly what we used:
- Al-Iqtibasaat al-Nooraniyah, Majlis 6 — Karachi, 1446H (2024). Iqtibasaat are printed selections from religious discourses. This booklet belongs to Ashara Mubaraka, the annual Muharram gatherings in which the community remembers Imam Husain and Karbala. We used printed page 9 of the sixth booklet. Its flowing Lisan al-Dawat prose moves into Arabic quotations and English phrases such as “peace of mind,” giving us a test of reading several languages on the same line.
- Tohfat Laali Akhbar al-Hudat. This is a historical and biographical guide to the Dawoodi Bohra community’s religious leaders and learned figures in India, organised by town and city. It records names, family relationships, important dates and burial places. The work dates to 1414H; our scanned copy is the second edition, dated 1433H. We used printed page 79, in the Burhanpur section. Its names, honorifics and dates make small transcription errors particularly consequential.
- Nayyir Sahifat al-Salaat wal-Ibaadaat, Part 1 — the Busaheba Sahifa. Often shortened to Sahifa al-Salaat wal-Ibaadaat, this is a practical guide to prayer, worship and religious observances, with Arabic texts and explanations in Lisan al-Dawat. Our copy is dated 1420H. We used printed page 170, which discusses fasting during travel in Ramadan. Its red headings, bullet points and footnote test whether the model can preserve the structure of detailed instructions.
Together, these pages gave us different print styles and reading problems, including mixed languages, dates and small marks. Every model got the same page images and instructions explaining Lisan al-Dawat and its common reading traps. We asked for a faithful transcription, with uncertain readings marked for review.
A small program sent the pages to the models, saved their responses, and recorded the time and model-call cost. We compared the text with our reviewed reference. We also repeated Tohfat Lali three times to see how much a model’s answer changed, and tested a second reading in which the model checked its draft against the images.
The main score is character error rate: how many additions, deletions or replacements are needed to make the transcription match the reference. At 4.87%, that is roughly five corrections for every hundred reference characters. Spacing and small marks count too. We also measured errors at the word level, because a page can look close while containing many words that still need attention.
Three pages give us a way to choose the next model to try on our books. They are a small sample, and the ranking may change on other pages.
Full Technical Explanation
The retained comparison contains 149 first or second readings across 20 model configurations, including different thinking settings. A complete first-reading result requires one Iqtibasat output, one Sahifa output and three Tohfat outputs. We average the Tohfat repetitions before pooling character edits across the three pages, so repeating that page does not give it three times the weight.
The scorer groups a letter with its following vowel marks, normalizes equivalent Unicode representations and removes our uncertainty annotations. Spaces, punctuation and requested page markers remain in the comparison. Second-reading changes are compared with the exact draft the verifier received. Costs are observed averages for accepted calls; they exclude failed attempts and human correction time.
Checking that the models were doing the reading
We also went back through saved responses, available agent traces and run records to look for shortcuts: a model referring to an answer it had already seen, claiming to look something up, or asking another model to do the work. The test runner provided images and instructions without giving the models browsing tools or access to the reference transcription.
The traces helped us understand a subtler problem too. A model sometimes used its knowledge of a name or historical event to settle an ambiguous reading. That can produce plausible text while moving away from the printed letters. It is one reason the scan stays beside the transcription during review.
This check has limits. Some providers expose only summaries or hide the reasoning entirely, and our reference text evolved during development. We cannot certify that every run was free of contamination. The results below describe the retained comparison and guide our next production trial.
Full Technical Explanation
The runner checked the returned model and provider, rejected unexpected tool calls, and screened both visible text and available reasoning for references to outside help. We inspected flagged passages in context: a phrase such as “cross-referencing” can describe checking the supplied images, so a keyword hit alone is not evidence of cheating.
The provenance audit also checked response identifiers, saved inputs and reference revisions. It found a stale manifest and outputs that predated the final reference locks. Those records do not establish one immutable, uncontaminated experiment. Encrypted reasoning cannot be inspected, and a readable trace cannot establish what was present in a model’s training data.
What we learned
| What we tried | What happened | What we changed |
|---|---|---|
| Full-page images | Small marks became difficult to distinguish after resizing. | Read overlapping bands, then zoom into unresolved words. |
| Giving models more time to think | The highest settings did not consistently improve the reading. | Use the settings that earned their extra cost on these pages. |
| A second reading against the scan | 13 of 17 complete configurations improved; three worsened and one stayed the same. | Review the changes before accepting them. |
| Comparing models on price | Flash was about 43 times cheaper than Astra high for the first reading, with more errors. | Choose a model with the correction work in mind. |
The second reading was useful often enough to keep experimenting with it. It also made some answers worse. Gemini Flash improved from 6.33% to 5.65% on the matched three-page comparison. Opus went from 5.54% to 6.52%. We need to look at what changed before calling a page finished.
Try a page yourself
Choose two models, zoom into the source, or switch between the raw reading, automatic cleanup and the model’s recheck. “Automatic cleanup” opens a real before-and-after example. You can also explore how scores and costs changed when we gave the models more time to think.
The interactive page comparison is loading. The model ranking below is also available as a table.
Which model would I use?
For our next batch, my practical order is:
- Claude Fable 5.1, high, as the default. Its 4.93% first-reading error was close to Astra’s result, at about $0.23 per page. It offers the balance I would try first.
- Gemini 3.7 Flash for a large, cost-sensitive batch. It reached 6.33% at about 1.4 cents per page. That leaves more correction work, but makes it inexpensive to generate drafts. Its first reading plus verification cost about 2.7 cents per page in this test.
- GPT-6 Astra, high, when the lowest measured error matters most. It won at 4.87%, at about $0.58 per page. I would use it on difficult material or when reducing the initial error burden is worth the extra spend.
That order is my judgment about usefulness for Alishraaq. The table below ranks the models strictly by first-reading error, using the best complete setting we tested for each model.
| Model and setting | Character error ↓ | Cost per page |
|---|---|---|
| 1. GPT-6 Astra, high | 4.87% | $0.583 |
| 2. Claude Fable 5.1, high | 4.93% | $0.228 |
| 3. Claude Opus 5 | 5.45% | $0.177 |
| 4. Claude Fable 5 | 6.07% | $0.518 |
| 5. Gemini 3.7 Flash | 6.33% | $0.014 |
| 6. Gemini 3.1 Pro | 6.36% | $0.185 |
| 7. GPT-5.6 Sol | 9.95% | $0.055 |
| 8. GPT-5.6 Sol Pro | 10.01% | $0.230 |
| 9. Grok 4.6 | 11.23% | $0.071 |
| 10. GPT-5.6 Terra | 16.35% | $0.068 |
| 11. Qwen3-VL 235B Thinking | 28.42% | $0.036 |
| 12. GLM-5V Turbo | 70.95% | $0.039 |
Full Technical Explanation
“High” gives the model more time to reason before answering. Medium, extra-high and maximum settings were also explored, but larger budgets did not consistently produce better readings. GPT-6 Astra medium tied Opus at 5.45% and cost about $0.157 per page; the table uses Astra high because it had the lowest complete error score for that model. Kimi K3 and incomplete effort settings are excluded from this ranking. A small gap such as 4.87% versus 4.93% does not establish that one model will reliably beat the other across a collection.
Getting from 4.87% error to production-quality text
A first reading still needs someone who can read the book. We built checks around the mistakes that kept coming back, so that person has a useful list of places to inspect.
The ye, te, ne catcher
Small words such as ye, te and ne turn up throughout Lisan al-Dawat. In the print we were working from, the final ه could be read as ر. That gave us ير where we expected يه, and the same mistake in other particles. Every character was valid, so a check for unexpected characters let these readings through.
The catcher looks for those spellings and checks the words around them. For example, تر بعد gets a suggestion to read ته بعد. A نر before a verb can be a misreading of the negative particle نه. These are examples from our Sahifa checking rules:
| Word | OCR reading | Suggested reading | What the check uses |
|---|---|---|---|
| Ye | ير | يه | A standalone word with the recurring final-letter confusion. Flagged for review. |
| Te | تر بعد | ته بعد | The following word makes this a known particle phrase. |
| Ne | نر پڑھے | نه پڑھے | The following verb points to negation. |
| Je | جر | جه | The same final-letter pattern, sent to the reviewer with its sentence. |
These are review suggestions from the wider Sahifa workflow. Each needs checking against its source page.
A blanket replacement would damage valid words. نر can mean “male,” and تر has legitimate comparative uses. We keep explicit exceptions for those contexts. The checker records the page and line, along with its reason and suggested reading, and leaves the transcription untouched for review.
Do-chashmi he
Do-chashmi he, ھ, needs its own check. It belongs in words such as چھے and پڑھي. Our early OCR traps included چه where the source required چھے. Turning every heh-shaped letter into the ordinary ه would erase that distinction.
The text checker flags do-chashmi in an unlikely position, using the preceding letter and exceptions such as a Hijri year marker. Finding a missing do-chashmi needs another look at the print: چه contains perfectly valid letters. We made checking چھے an explicit instruction in the verification pass because a model could otherwise skim past it again. The spelling is word-specific; ڈهور, for example, uses ordinary heh in our transcription rules.
The small marks and word endings
Dagger alif, or khara zabar, also caused trouble. In اٰپ, the small vertical mark was sometimes read as a pesh, giving اُپ. Our fixer has a rule for that specific word. It also handles the known اُنے reading of انے. Those rules came from earlier OCR work; neither fired in this three-page benchmark’s saved first readings.
We also check for a lost final ں and confusions such as ني becoming في when we re-read the images. An unusual word can be compared with our existing Lisan al-Dawat collection to help find likely alternatives. Frequency gives the reviewer another clue, and the scan still decides the reading.
Taking a page through review
Before these checks, a mechanical cleanup pass makes the character encoding consistent. Some of those substitutions look almost identical on screen. In this benchmark, they left all five of Astra high’s first readings unchanged, so its 4.87% character error stayed at 4.87% after automatic cleanup.
The wider checks give us places to spend our attention. On an earlier 662-page Sahifa packet, the language checker produced 1,618 findings, including 108 ye flags and 522 contextual te flags. It applied zero automatic edits. We also check for stray page numbers and missing spaces, and test whether the font can display the text.
The model gets the scan and draft together for another reading. A human reviewer can then open the page beside the transcription, resolve the flagged words and check names and small honorific marks. Approved text is assembled into paragraphs that flow on a phone, while keeping its source-page reference.
This benchmark measures first readings and model verification. We have not measured a final error rate after human review.
Full Technical Explanation
The Sahifa particle checker is report-only. Its versioned rules include standalone ير → يه and جر → جه review flags, تر → ته in specified phrases, and نر → نه before specified verb forms. Explicit exceptions preserve male نر, comparative تر and imperative كر. The existing regression checks cover those exceptions. The wider language checker remains a local review tool; it is not yet wired into the production importer.
The saved July 12 Sahifa report contains 1,618 findings across four packets totaling 662 pages: 697 classified by the rules as errors and 921 requiring review. Sixteen findings came from corpus comparisons. The reference snapshot contained 555,882 tokens from Bayaan, reviewed Iqtibasat and Kawakib material. Findings retain source locations and input, rule and corpus hashes; these counts describe that earlier report and are separate from the three-page model benchmark.
The do-chashmi position check permits ھ after the listed aspirate-capable letters, skips intervening vowel marks and allows a year-marker exception. It cannot prove that every permitted use is correct or detect every missing ھ. The image-verification prompt explicitly calls out چھے / چه, and source-specific spellings still need visual review.
The mechanical fixer replay covered all 93 saved first readings. It made 84 Unicode substitutions across 26 readings: 45 ہ → ه, 26 ک → ك and 13 ی → ي. These are U+06C1 → U+0647, U+06A9 → U+0643 and U+06CC → U+064A. All 57 available saved intermediate texts matched the replay. Font shaping was excluded from that replay.
The fixer also has word-boundary rules for اُنے → انے, اُپ → اٰپ and a standalone اُ → اٰ, plus a rule for Arabic-Indic number groups attached directly to letters or vowel marks. It preserves standalone numbers. None of these word or attached-number rules fired in the 93-reading replay; their suitability depends on the source’s conventions. The distinct letters پ چ ٹ ڈ ڑ گ ے ں and do-chashmi ھ are preserved.
The production linter checks unexpected characters, unlikely do-chashmi positions, digit-only lines and tokens longer than 14 letters after vowel marks are removed. Its font check requires the font and shaping dependency. A separate Tesseract word-count comparison flags unusually short or long transcriptions. The importer repeats a smaller set of fatal character checks. Each check covers a defined class of problem; passing it still leaves the words to be read against the source.
The next step for Alishraaq is to put the strongest candidates through a larger batch and measure the correction time. That is the work that will tell us how quickly we can make the next book searchable.