Turning phone photos into a clean PDF: scanning documents without a scanner
A signed lease, a passport page, a dozen receipts, a form the bank wants back “as a scanned PDF” — and no scanner. A phone camera is a better scanner than most flatbeds ever were, provided you use it like one: even light, lens parallel to the paper, one page per frame, then a few minutes of cleanup. This guide covers the whole path from camera roll to a PDF that someone can open, read, search and upload: how to shoot so the photo already looks scanned, how to crop, straighten and shrink each page, how to bind the pages into one file in the right order, how to get the text out with OCR, and how to land under a portal’s size limit without turning the letters to mush. Every step uses a free tool on this site; nothing needs installing.
Shoot it like a scanner
Light is the whole game. Put the page under daylight from a window to one side, or two lamps at roughly 45° either side — the copy-stand recipe — and never use the flash: it bounces off ink and glossy paper as a white blob that no cleanup can remove. Watch for your own shadow; a shadow edge across a line of text is the single most common reason OCR returns garbage for one band of a page, because the recogniser sees the dark half as ink. If a shadow lands on the page, move yourself, not the page.
Hold the phone parallel to the paper. The tell is in the viewfinder: if the page’s left and right edges are not parallel, you are shooting at an angle and the page will come out as a trapezoid (keystone). None of the image tools here correct perspective, so this has to be right in the camera. Turn on the grid overlay (on iPhone it is under Settings → Camera → Grid) and line the page edges up with it; use the main 1× lens, not the ultrawide, which adds barrel distortion at the edges.
Fill the frame, because the frame is your resolution budget. A 12 MP phone photo is 4032 × 3024 pixels; a page that spans 90% of the long edge gets about 3,600 px across its 297 mm, which is roughly 310 dpi — scanner quality. The same page photographed with the whole desk in view might get 1,200 px, which is about 100 dpi, and small print becomes unreadable to OCR. Shoot one page per photo, never a double-page spread, all in the same orientation and in reading order, so that the camera roll’s own ordering is the page order.
Three small habits fix most blurry pages: tap the text to focus before you press the shutter, use the volume button or a 3-second timer instead of the on-screen button so the phone does not move, and lay the page on a dark matte surface — a black notebook cover works — which gives you a clean edge to crop against and stops thin paper showing the print from its other side. If your phone has a document mode (Notes and Files on iOS have “Scan Documents”, Google Drive has “Scan” on Android), it does the edge detection and perspective correction for you and writes a PDF directly; the rest of this guide is for when you already have photos, or when those modes crop the edges badly and you want control.
Clean up every page before you assemble anything
iPhone photos first: HEIC will not go into a PDF
iPhones have saved photos as HEIC since iOS 11 unless the camera is set to “Most Compatible”. The PDF builder on this site accepts anything the browser reports as an image, but it can only embed JPG and PNG directly and hands every other format to the browser’s own decoder — and Chrome cannot decode HEIC. The result is the error Could not build the PDF. One of the images may be in a format the browser cannot decode. Convert first with HEIC to JPG: select the whole batch and it downloads a ZIP of JPGs. The crop editor below opens HEIC on its own, so pages you edit anyway do not need the extra step. The HEIC guide covers the format itself.
Crop, straighten, and fix the tone
Open each photo in Crop Image. The editor starts on the Adjust tab with the Crop tool active: drag the corner handles to the paper’s edges — leave a few pixels of the dark background rather than cutting into a margin — or lock the box to a preset ratio. The Rotate tool on the same tab straightens a slightly tilted shot; do it before you crop tightly, since rotation exposes the corners. Photos wider than 4096 px on the long edge are downscaled to 4096 before the editor opens (the page tells you: “Large image resized to … so it can be edited and saved on this device”), which for a page is still around 350 dpi, so nothing you care about is lost.
For text, the Finetune tab’s Brightness and Contrast sliders turn cream paper white and faint photocopy grey into black; the Filters tab’s “Black & White” preset removes colour noise from a photographed page entirely. Do not expect greyscale to halve the file the way a scanner’s greyscale mode does: the browser still writes a three-channel JPEG, so the saving is only the colour channels compressing to almost nothing once they are flat. If you only want the preset, Add Filters opens the same editor on that tab.
Size and save
Resolution is where the file size is decided. Use the Resize tab (or the width and height fields in the save dialog) to bring the long edge down to 2,000–2,500 px; Resize Image opens the same editor on that tab if you have nothing to crop. The table gives the arithmetic for the two common paper sizes.
| Long edge | dpi on A4 (297 mm) | dpi on Letter (11 in) | Good for |
|---|---|---|---|
| 1,200 px | 103 | 109 | Reading on a phone screen; OCR unreliable on small print |
| 2,000 px | 171 | 182 | Screen reading and OCR of normal 10–12 pt body text |
| 2,500 px | 214 | 227 | OCR including footnotes; ordinary printing |
| 3,500 px | 299 | 318 | The archival “300 dpi” figure |
| 4,032 px (full 12 MP frame) | 345 | 367 | More than any use needs; 3–5 MB per page as JPEG |
In the save dialog choose JPG and set the quality slider to about 70 — for black text on white paper the difference from 90 is invisible and the file is far smaller. Two shortcuts in the same dialog do the sizing for you: the “Compress image” tick caps the long edge at 2560 px and encodes at quality 72 in one go, which is almost exactly the recipe above; and “Max file size (KB, optional)” binary-searches the quality (and, if it has to, the dimensions) so the output is guaranteed under the number you type — useful when a form says “each image under 500 KB”. Select several photos at once and the editor opens them one after another, downloading every saved copy together as edited-images.zip.
Metadata: the passport scan with your GPS position in it
A camera JPEG carries EXIF: the phone model, the timestamp, and usually the GPS position where it was taken. Saving from the editor writes a fresh canvas encode, which carries none of it. But if you skip the editor and drop camera JPEGs straight into the PDF builder, the JPEG bytes are embedded unchanged, EXIF and all — pdfimages -j images.pdf page hands the originals back out of the PDF with their GPS tags intact. For pages you deliberately do not re-encode, Remove Metadatalists what each file carries (a red “GPS location” marker when there is one) and strips it losslessly: for a JPEG it drops the APP1–APP15 and COM segments and leaves the image data byte for byte unchanged. One caveat covered in the next section: a photo that relies on its EXIF orientation tag to display upright will come out sideways once that tag is gone, so edit first, strip second. The metadata guide explains what else lives in that segment.
Assemble the pages into one PDF
Image to PDF takes the cleaned JPGs, lists them with ↑ ↓ arrows and a ✕ to remove, and “Create PDF” downloads images.pdf with one page per image in the listed order. Three details of how it builds the file explain most surprises later.
The page is sized to the pixels, one point per pixel.A 2,000 × 2,828 px page becomes a 2,000 × 2,828 pt page, which a PDF viewer’s inspector reports as 27.8 × 39.3 inches. That is harmless — every viewer and print dialog fits the page to the paper — but it is why there is no A4 or Letter option, no margin option, and why a landscape receipt among portrait pages produces a landscape page. Rotate such pages in the editor beforehand so the whole document reads one way.
JPG and PNG bytes are embedded unchanged.The PDF’s size is the sum of the images plus about a kilobyte of structure per page, and the quality is exactly what you saved. Anything else — WebP, AVIF, BMP — is decoded and re-saved as lossless PNG first, and a lossless PNG of a photograph is several times the size of the JPEG, so save pages as JPG before you get here. PNG is the right choice only for screenshots and pure black-and-white line art.
Orientation comes from the pixels, not the EXIF tag. iPhones and many Android phones store a portrait photo as landscape pixels plus an EXIF Orientation tag; the gallery obeys the tag, the PDF builder (pdf-lib underneath) does not, so an unedited portrait photo can land as a sideways page. Any page that went through the crop editor is safe, because the editor works on the already-rotated image and writes the pixels upright. If a page comes out sideways, that is the diagnosis: open it in the editor, save, and rebuild.
Order mistakes are cheap to fix afterwards. Reorder PDF Pages renders every page as a thumbnail with ← → and ✕ buttons and saves _reordered.pdf without re-encoding anything; a forgotten page becomes a one-page PDF that you add with Merge PDF and then move into place. The merge, split and reorder guide has the details.
Make the text searchable — what OCR gives you here
A PDF built from photos has no text inside it: select-all in a viewer selects nothing, and the “PDF to text” tools return an empty file. PDF OCRreads the pixels instead. Drop the PDF (several at once is fine) and it first checks for a text layer — if it finds 40 characters or more it uses that and tells you “This PDF already contained selectable text, so it was read directly” — then renders each page and runs it through PP-OCRv6, an open-source PaddleOCR model executed by onnxruntime-web on your GPU where WebGPU is available and on the CPU otherwise. The first run downloads the engine, about 37 MB, with a live counter (“Downloading the OCR engine — 12 / 37 MB (cached after this)”); after that it starts instantly and works offline.
Be clear about the output: it is plain text, shown in a box with “Copy all” and “Download .txt” buttons (several PDFs arrive as extracted_text.zip), with page N of the text separated from page N+1 by a blank line. The tool does not write an invisible text layer back into the PDF, so the PDF itself does not become searchable in a viewer. When a searchable PDF is the requirement, that is a desktop job: ocrmypdf --rotate-pages --deskew in.pdf out.pdf adds a text layer and writes PDF/A-2b by default.
Knowing what the engine actually sees tells you what to fix. A photo-built page is rendered at its native pixel size (the renderer only upsamples pages smaller than 2,000 px), then the working copy is capped at 4,000 px on the long edge — 2,600 px on a phone that reports 4 GB of memory or less. Text detection runs on a copy shrunk to 960 px on the long edge, so on a full A4 page it is looking at roughly 80 dpi: 8-pt footnotes are about five pixels tall there and are simply not found, which is why filling the frame with one page matters more than any resolution setting. Each detected line is then cut out and resampled to 48 px tall for recognition, and any line whose confidence is under 0.5 is dropped rather than guessed. Beyond 2,500 px per page the recogniser gains nothing; the file just gets bigger.
Skew of a few degrees is tolerated, because detection returns rotated boxes. Keystone is not: reading order is rebuilt by grouping boxes whose vertical centres fall within 0.6 of the median line height, so on a trapezoid page where lines slope, the ends of neighbouring lines get merged or a long line is split. The model reads 50 languages with a single set of weights — English and 46 Latin-script languages plus Simplified Chinese, Traditional Chinese and Japanese — and nothing has to be selected; Korean, Cyrillic, Arabic, Hebrew, Thai, Vietnamese and the Indic scripts are not covered. Handwriting is not what it was trained on; expect fragments at best.
Skip OCR when the text is not the point: a signature page, an ID document the portal only needs to look at, a form whose value is in the ticked boxes (OCR returns the labels, not the ticks). If you want the text of one page before you have built anything, Image to Text runs the same engine on a single photo. The OCR guide goes deeper into why scans fail to read.
Keep the file small
Because the builder embeds your JPGs unchanged, the size problem is decided before the PDF exists: fifteen unedited 4 MB phone photos are a 60 MB PDF, and no portal takes that. Pages resized to about 2,500 px and saved at quality 70 come in at a few hundred kilobytes each, which is the cheapest and cleanest fix because the JPEG is encoded exactly once.
When a finished PDF still has to shrink — someone else’s scan, or a hard limit like “2 MB” — Compress PDF re-renders every page as a JPEG at a preset resolution and quality, keeping the page dimensions. The presets are:
| Preset | Renders at | JPEG quality | On a page built by Image to PDF |
|---|---|---|---|
| Light (best quality) | 150 dpi | 0.8 | 2.08× the original pixels — upsampled, file can grow |
| Balanced | 110 dpi | 0.7 | 1.53× — still upsampled |
| Strong (smallest) | 72 dpi | 0.5 | 1× — the only preset that keeps the pixel count |
The last column is the trap. “dpi” is measured against the page size, and a page that Image to PDF built is one point per pixel — nominally 72 dpi. Light therefore renders it at 2.08 times its width and height, 4.3 times the pixels, and encodes all of them: more bytes, no more detail. On a normal scanner PDF (an A4 page of 595 × 842 pt with a 300 dpi image inside) the same presets downsample as intended. For photo-built PDFs, use Strong or type a number into “Target size (KB, optional)”: the compressor then walks a ladder — your preset, then quality 0.45, then 0.75× the resolution at 0.40, 0.55× at 0.35, 0.40× at 0.30 — stops at the first rung under the target, and if even the last rung is over it saves that one and says The target size could not be fully reached; the smallest possible version was saved.The result shows before and after (“3.2 MB → 480 KB”) and downloads as _compressed.pdf, or compressed.zip for a batch. Remember that the re-render turns any typed page you merged in — a cover letter, say — into pixels; the PDF size guide covers that case.
What portals actually ask for
Page size.There is no A4 or Letter switch in this pipeline; the page is the image. What you can control is the aspect ratio: crop to the paper’s proportions (A4 is 1 : 1.414, Letter is 1 : 1.294) and the print dialog’s fit-to-page leaves no odd margins. A portal that validates the physical page size — some court e-filing systems insist on Letter — needs a desktop print-to-PDF step; that is rare, and the upload rules will say so.
PDF/A. None of the tools here produce PDF/A, and a validator will reject images.pdfon sight (no PDF/A identification in the XMP metadata, no output intent). If the rules say PDF/A — archives, some tenders, some courts — the ocrmypdf command above writes PDF/A-2b, and LibreOffice’s PDF export has an “Archive (PDF/A)” option for a document you have placed the page images in.
One file or several.Submit one PDF per document, not one per page and not one for everything; a “proof of address” upload wants the three pages of the utility bill in one file. If a portal caps pages or size per upload, split at a document boundary rather than compressing harder.
Passwords, and doing them last. Protect PDF encrypts the finished file with AES-256 (real qpdf encryption, not a viewer-only flag), asks for the password twice, and saves _protected.pdf; the notice reminds you that it cannot be recovered. Do this as the final step, because the other tools refuse encrypted input — PDF OCR with Could not read these PDFs. They may be corrupted or password-protected — try the Unlock PDF tool first. and Compress PDF with Could not compress. The file may be corrupted or password-protected. — and send the password by a different channel than the file. The passwords guide explains what the encryption does and does not stop.
Every tool in this chain does its work inside your browser tab, so a passport scan never sits on someone else’s server — but it does sit in your camera roll and its cloud backup until you delete it there too. After the PDF is sent, delete the source photos (on iOS, also from Recently Deleted, which keeps them for 30 days), the intermediate JPGs and ZIPs in your downloads folder, and any unprotected copy of the final PDF.
Common mistakes and how to recognise them
- A shadow band across the page. OCR returns clean text above and below and gibberish or nothing in the band. No slider fixes it; reshoot with the light from the side.
- Sideways pages. Portrait photos that display upright in the gallery but land rotated in
images.pdfare relying on their EXIF orientation tag, which the builder ignores. Run them through the crop editor and rebuild — and never strip metadata from such a photo without editing it first, or it will display sideways everywhere. - Mixed orientations. One landscape receipt in a portrait document is a landscape page that every reader has to turn their head for. Rotate it in the editor before assembling.
- A 60 MB PDF. Full-frame 12 MP JPEGs went in unchanged. Resize to 2,500 px first; if the file already exists, Compress PDF with Strong or a target size.
- Ringing and smudges around letters. JPEG artefacts, from a quality set too low or from compressing twice — a page saved at quality 70 and then re-rendered by Compress PDF at 0.5 has been through two lossy encodes. Set the size once, at the image stage, and leave it.
- A huge PDF from WebP, AVIF or PNG pages. Non-JPG inputs are re-saved as lossless PNG before embedding. Save the pages as JPG in the editor.
- Compress PDF made it bigger. Light or Balanced on a photo-built page upsamples to 150 or 110 dpi relative to a 72-dpi page. Use Strong.
That does not look like a PDF.You dropped a JPG on PDF OCR. Use Image to Text for a single photo, or build the PDF first.No text found. If the scan is very low resolution, skewed or handwritten, OCR may not be able to read it.Detection found nothing it trusted on any page. Check the pages are not tiny (the whole desk in frame), not keystoned, and not handwriting.- Forgetting page 2. The most common complaint we hear about scanned submissions is a missing back page: terms on the reverse of a contract, the second page of a statement. Check the page count against the paper before you send, and if one is missing, build it as a one-page PDF, merge, reorder.
Do this
- Shoot every page flat, in side light, no flash, phone parallel, one page filling the frame, in reading order.
- Run each photo through the crop editor: crop to the paper, straighten, raise contrast, resize to 2,000–2,500 px on the long edge, save as JPG at quality 70 (or tick “Compress image”). This also removes EXIF and fixes orientation.
- Build the PDF with Image to PDF from JPGs only, check the page order, and fix any slip with Reorder PDF Pages or Merge PDF rather than rebuilding.
- Run PDF OCR when you need the text; keep the .txt beside the PDF, since the PDF itself does not gain a text layer.
- If a limit still bites, Compress PDF with Strong or a target size — never Light or Balanced on a photo-built file — and password-protect last, after OCR and compression.
- Delete the source photos, intermediates and unprotected copies once the document has been accepted.
Frequently asked questions
How do I scan a document to PDF without a scanner or a scanner app?
Photograph each page flat, in side light, with the phone parallel to the paper. Crop and straighten each photo, save it as a JPG around 2,000–2,500 px on the long edge, then drop the JPGs on the Image to PDF tool in page order. It builds one PDF with one page per photo.
What resolution should a scanned page be?
For reading on screen and for OCR, 2,000–2,500 px on the long edge — roughly 170–230 dpi on A4 or Letter — is enough. 300 dpi (about 3,500 px on the long edge) is the archival and print figure. A full 12 MP phone photo is more than 340 dpi and only makes the file bigger.
Why is my scanned PDF so big?
Because the PDF contains your JPGs byte for byte: fifteen 4 MB phone photos make a 60 MB PDF. Resize each page to about 2,500 px and save at JPEG quality 70 before building the PDF, or run the finished file through Compress PDF with the Strong preset or a target size.
Does the OCR tool make my PDF searchable?
Not in the file itself. PDF OCR reads every page and gives you the text to copy or download as .txt; it does not write an invisible text layer back into the PDF. For a searchable PDF you need a desktop tool such as ocrmypdf.
Will a bank or government portal accept a PDF made from phone photos?
Almost always, as long as the page is legible, upright and the file is under the size limit. The exceptions are portals that validate PDF/A or a fixed paper size; none of the tools here produce PDF/A, so check the upload rules first.
Tools used in this guide
Every one of these runs in your browser — the files you work on never leave your device.