pdf tool
PDF text extractor
The page on one side, the text pulled out of it on the other. You can read them against each other, fix anything the reconstruction got wrong, then copy the lot. If the file is a scan with no text layer, the page says so plainly instead of handing you an empty box.
Runs on your device. Nothing is uploaded.
Loading the tool…
How to use it
- 1
Drop the PDF
Every page is read and its text rebuilt. Nothing is uploaded; the file stays in this tab.
- 2
Read the two panes
The page image on one side, its text on the other. Move between pages with the numbered strip.
- 3
Fix anything that came out wrong
The text box is editable. Correct a broken line, delete a repeated header, reorder a paragraph. Your version is what gets copied.
- 4
Search it
Type in the find box and the page numbers show how many matches each one holds. Press Enter to jump to the first.
- 5
Copy or download
One button copies the whole document. Advanced options add Markdown and JSON downloads.
Why extracted text comes out in the wrong order
A PDF page is not a document, it is a drawing program. Text arrives through operators that place glyphs at coordinates: Td and Tm move the cursor, Tj and TJ paint characters. The specification is explicit that Tm replaces the text matrix rather than adding to it, so two consecutive lines in the file have no ordering relationship at all. There are no paragraphs, no columns and no words in the stream. A layout engine that finishes the right column before the left one writes it out that way, and a reader that trusts the file order reads the page backwards.
Spaces are usually not in the file
A space is a glyph like any other, and producers routinely leave it out and just move the cursor instead. That is why so many converters return runs like "Spacesareimplied" or scatter extra gaps through a sentence. Every space you see here is worked out from geometry: the distance from the end of one glyph run to the start of the next, measured against the font size. A gap wider than about a fifth of the type size becomes a space, a much wider one becomes a line break.
Columns first, then lines
The obvious approach is to sort every fragment by vertical position and then horizontal position. It is what most tutorials suggest and it is wrong: on a two column page it reads one line of the left column, then one line of the right, all the way down. This tool looks for the gutter first, a vertical band no glyph run crosses, splits the page there, and only then groups each side into lines by their baselines. Getting the blocks right matters more than the sort.
Reading orders, and when to change them
Work it out per page is the default and handles most documents. One column, straight down is right for a page where the gutter detection has misfired on a figure. Two columns forces the split when the gutter is faint. Keep the page layout pads with spaces so tables line up in a monospaced editor. Raw hands back the glyph runs in the order the file draws them, which is ugly but is the ground truth when everything else looks scrambled.
Limits
- A scan has no text layer, so there is nothing to extract. This tool has no OCR and says so per page rather than returning silence.
- Column detection looks for a vertical band that no glyph crosses. A page with a figure straddling the gutter, or three columns, can still come out interleaved. Switch the reading order under Advanced options when that happens.
- Changing the reading order rebuilds every page and drops the edits you made.
- The Markdown and JSON downloads are rebuilt from the page itself, so edits ride along with the plain text download rather than those two.
- Very long documents take a while, because the text of every page is read up front so the word count and the search are accurate.
What it does not do
- It does not read text off a scan or a photograph. That needs OCR, which is a different kind of tool.
- It does not keep bold, italics, colours or tables. It gives you the words and their order.
- It does not write a Word file.
Questions people ask
Is the file uploaded?
No. It is read into memory in this tab and parsed by pdf.js, which runs entirely in your browser. The page makes no network request after it loads. That matters here more than in most tools, because the files people want the text out of tend to be contracts, reports and statements.
It says there is no text on the page. Why?
The page is a picture. Scanners and phone cameras produce PDFs that are photographs of paper, with no character data underneath. Nothing can extract text from that without optical character recognition, which this tool does not have. Run the file through OCR software first, then bring the result back here.
Why is the text out of order?
The file draws its columns in an order that does not match how you read them, and the gutter detection did not catch it. Open Advanced options and set the reading order to Two columns to force the split, or One column if a figure confused it. The text box is editable, so you can also just move the paragraph.
Do my edits survive?
Yes, for the plain text copy and download. Type in the box, move to another page and come back, and your version is still there. Changing the reading order rebuilds every page from scratch and throws the edits away, which is why that control sits under Advanced options rather than in front of you.
What do the Markdown and JSON options give me?
Markdown promotes lines that are noticeably larger than the body text into headings and turns bullet characters into list markers, which is useful for pasting into a wiki. JSON returns every line and every glyph run with its coordinates and size, which is what you want if you are writing your own parser.
Why are words split across lines joined back up?
Typesetting hyphenates a word at a line break, and that hyphen is an artefact of the layout, not part of the word. Joining them back gives you searchable prose. If you are extracting poetry or code where the hyphens are real, switch it off under Advanced options.
Can it handle a password protected PDF?
Only if the password protects printing or editing rather than opening. A file that needs a password to open cannot be read here. Open it in a viewer, type the password, save an unprotected copy and use that. Damaged files fail with a different message.
Rewrite this into a clean document
Take what you made here into documents.
Create a document with OneCraftRelated tools
- PDF to JPGEvery page becomes a thumbnail you tick. Save the ones you want as JPG, PNG or WebP at 96, 150 or 300 PPI, rendered in your browser with nothing uploaded.
- Word counterCount words, characters, sentences and paragraphs as you type, and see which sentences are hard work. Runs in your browser, nothing is uploaded or stored.
- JSON formatterFormat and inspect JSON in your browser. A collapsible tree beside the text, errors pinned to the line and column, and warnings for duplicate keys.
- Compress PDFMeasures where a PDF’s size actually goes, picks the method the evidence supports, and shows the same page before and after. Never hands back a bigger file.
- CSV to tablePaste CSV and read it as a sortable grid. Every column header shows its type, blanks and range, and any row with the wrong field count is named by line.
Built with pdf.js (Apache-2.0).
Written and checked by the OneCraft team. Last checked .