Tools,

Can Tesseract read handwriting? Not really.

9%

of the words on 100 real handwritten notes

For printed scans: $0.006 a page

The same engine reads print fine

Words found by plain Tesseract
Printed book scans, 60 pages
90%
Handwritten notes, 100 pages
9%

Nothing is broken. Tesseract was built for print, and its own FAQ says handwriting "won't work very well". On 27 of the 100 notes it returned nothing at all, which is at least honest.

No setting rescues it

Tesseract on the 100 notes
Setting Words found Output words right
Default 9.3% 19%
--psm 6 15.1% 11%
--psm 11 16.0% 11%
tessdata_best 9.3% 20%
Our Actor, full cleanup 14.2% 21%

The page modes find more words by printing more junk: about 9 in 10 output words are wrong. The better model changes nothing, and our cleanup adds little.

There is no handwriting model

I read every file name in the three official model folders, and none is for handwriting. I did not test the files that strangers share as handwriting models.

Other free tools read more

Words found, same 100 notes, default settings
PaddleOCR
62%
RapidOCR
56%
EasyOCR
16%
Tesseract
9%
pip install rapidocr onnxruntime
from rapidocr import RapidOCR

result = RapidOCR()("note.jpg")
print("\n".join(result.txts))

Read the result before you trust it. Only 59% of RapidOCR's output words were right, and 69% of PaddleOCR's.

One note, two readings

A handwritten note in blue ink on lined paper, about a court's power to make orders pending an appeal
From GNHK by Lee, Chung and Lee (GoodNotes), CC BY 4.0. Resized. Picked to show the gap: the totals above are the fair numbers.

Tesseract wrote:

ine onan cegishator
SRV ASA SRO
iasigrabensa niicecomichiabrsse
RR HEARTS ARAN OM

RapidOCR wrote:

Order 4 nule 6 -
The Lourt bas the power to make orders
by way of injunctions and Such necassarg
orders for the protection of property or
person pending the determrination of an appeel
to it even thougk no Such application was
mack in the Court below.

Our tools read print, not this

Our Actor is built on Tesseract, so do not buy it for handwriting. Our service reads print only, and refunds a job that turns out to need handwriting. For printed scans, both work.

Do pytesseract or tesseract.js do better?

pytesseract calls the same program, so expect the same result. tesseract.js is a port of the same engine. I did not test it.

Does neat writing help?

Yes, a lot. On 5 pages of one neat manuscript, Tesseract found 452 of 929 words. See EasyOCR vs Tesseract.

Can I train Tesseract on handwriting?

You can, with labeled samples of that hand. I did not test training, so I have no number for it.

How I tested it

All 100 images in our GNHK picks: real English notes from many writers, phone and scan, 5,473 truth words. Words found means truth words found anywhere in the output, so reading order does not count.

Output words right means output words that are truth words. Tesseract 5.5.3, RapidOCR 3.10.0, PaddleOCR 3.7.0 and EasyOCR 1.7.2, on an arm64 Mac, CPU only.

Other jobs ran at the same time, so the times are rough. Our Actor ran with the 1 GB page size. On the notes EasyOCR finished, it found 19%. I did not test paid services or vision models.

Sources

Two ways to skip the work

Run it yourself. Our Apify Actor turns scanned PDFs into Markdown, tables included.

Try the Actor

Or send us the scan. Tack, our AI, does the job for $29, up to 50 pages. First page free.

Get one page free