Every few months life hands you another form: a tax form, a visa application, a child benefit claim, a
school registration. And every time you type the same things again: your name exactly as it is in the
passport, the passport number, its expiry date, your date of birth in this form's format, your child's
details, your address.
All of that is already on your phone, in the scans of your own documents. So in Mobile PDF Scanner
2.6.0 for iPhone and iPad I added Fill from my documents: the app reads your identity documents once,
and after that it fills forms from them.
Here's how it works and the main rule behind it.
## The user flow
- Read your documents once. Turn on Find my data in documents in My data. The app looks through passports, ID cards, driving licences, residence permits, visas and work permits already in your library.
- Say who is who. If it finds an identity document of someone new, it asks: is this you, your partner, your child, someone else, or Not needed?
- Open a form and tap Fill → Fill from my documents. It works on interactive PDF forms and on scanned or photographed paper forms.
- Check the rest. Values the app is sure about go straight into the fields. Everything else goes to a Check these list, where you tap Use if a suggestion is right. Tap the badge on any filled field to see which document and page the value came from.
If the form has a section about your child or partner, the app switches to that person for that section.
## The main rule: an empty field is better than a wrong one
An autofill that is right 95% of the time sounds great, until the other 5% is a wrong passport number on a
visa application.
So the app fills a field only when it's sure. When two documents disagree, when a label is unclear, or when
it can't tell whose field it is, it offers the value instead of writing it. Fields for other people on
the form (employer, preparer, attorney, witness) are left empty.
In practice that meant:
- Identity documents are read whole, including the machine-readable zone (MRZ) with its ICAO check digits. A digit misread by OCR fails the checksum, so it doesn't end up in a form.
- Letters and contracts give only details that stand right next to the name of someone you already have, and those are marked uncertain.
- Bills and receipts are skipped completely. The address and IBAN on an invoice usually belong to the seller, not to you.
- Your edits stay yours. If you delete or correct a value, re-reading the documents won't bring the old one back.
## Values follow the form, not the passport
A passport says KOVALENKO, 12 MAR 1988. A US form wants 03/12/1988, a German one 12.03.1988. The
app reads the form's own text to pick:
- the date format (DD.MM.YYYY, MM/DD/YYYY, …)
- the alphabet for names (Latin or Cyrillic, with transliteration where needed)
- capital letters, where the form asks for them
- the kind of number a field accepts (a tax-number field takes only a tax number)
It also handles split fields like First / Middle / Last and combined ones like City, State, ZIP.
## Forms come back every year
When reading is on, the app also remembers forms you've filled. Next year's version of the same tax form
gets your previous answers in the matching fields, matched by the PDF's own field names. Answers from
another person's form are only offered, never filled in by themselves.
## Why no LLM
Two reasons.
Privacy. This is the most sensitive data people have. My data stays on the device, encrypted
(Apple's CryptoKit + Keychain), it is not synced to iCloud, it doesn't appear in search, and opening it
needs Face ID, Touch ID or the passcode. Nothing is sent to a server.
Languages. A big part of my users write in Ukrainian and Polish, and Apple's on-device model doesn't
support those languages. So extraction is built on rules that work for every country, not on per-country
templates:
- ICAO MRZ (passports, ID cards, visas) with check digits
- EU driving licence numbered fields (1., 2., 3., 4a., …)
- national ID numbers that carry their own checksum
- a multilingual dictionary of field labels, with fuzzy matching because OCR misreads small print
On my test set of 31 real-format documents in several languages, the reader got every value it marked as
sure right, and found almost all of them. Real forms (US W-9, W-4, I-9, I-765, 1040, German Kindergeld)
round-trip through form memory fully. That's my own test set, not a benchmark, but it's the number I tune
against: no wrong values first, coverage second.
## Try it
Fill from my documents is part of Premium, and you can try it on 3 forms for free. The button shows
how many you have left. Collecting and viewing My data is free, and so is filling forms by hand (typing,
adding fields and checkboxes, saving the copy).
📱 Mobile PDF Scanner on the App Store
📖 Step-by-step guide
I'd love feedback, especially on forms from your country that break it. Those are the cases I want to find.
And always read the filled copy before you sign it. 🙂
Top comments (0)