What Bengali script asks of a recogniser
Bengali hangs its letters from a headstroke, the matra, that runs along the top of a word and joins the letters into one band, much as Devanagari does. Conjuncts (juktakkhor) are often fused ligatures whose shape does not show the letters inside them: ক্ষ and জ্ঞ look like single letters, not like two. The vowel signs ি, ে and ৈ are drawn to the left of their consonant but stored after it, and ো and ৌ wrap around both sides. So correct Unicode output does not follow the left-to-right order of the marks on the page, and a reader that copies the visual order gets the spelling wrong.
Bengali or Assamese?
Assamese is written in the same script, so identifying the script does not identify the language. The two differ in a few letters: Assamese writes ৰ and ৱ where Bengali writes র and ব. When a page is Bengali script, the pipeline reads a sample and counts those two letters. If they make up at least 2% of it, the page is read as Assamese, otherwise as Bengali. When the sample cannot be read, it falls back to Bengali, which is by far the more common of the two. If you know the language, choosing it removes the check entirely.
Measured accuracy
On our ground-truth corpus — 1 Bengali document, 3,006 characters of prose — this pipeline reads 94.8% of characters correctly (5.16% character error rate). One document is a small sample, and it is a clean digital render; printed books, newspapers and photocopies will score lower. The same test file also lists conjuncts out of context, one after another, and that section reads far worse. It is reported separately rather than averaged in, because it is not prose.
How the page is prepared, and why only once
A scan is prepared several ways before recognition, as plain grayscale and with two kinds of threshold, and the best-scoring version is kept. On Bengali that choice turned out to be dangerous when made page by page: recognition confidence barely moved between versions while the error rate moved enormously, and one threshold that looked just as confident produced more than twice the errors. Choosing afresh for every page kept landing on it. The version is now chosen once, for the whole document. Handwriting is not supported; this reads printed Bengali.