Why Ctrl+F is not enough for a long PDF
Find-in-page matches an exact string inside one document and stops there. It does not rank matches by how well they fit your question, it does not search several files together, and it does not give you a citation label for a report. For a 200-page report or a bundle of contracts, it is not.
A keyword ranking method fills that gap. It scores each passage against the whole question, so the strongest chunk comes first even when the question's words are spread across several sentences of that chunk. The PDF to Knowledge Pack works in that order: extract, split by page, rank. Each step has limits, covered below.
How page chunks and BM25 ranking work
Page-level chunking keeps every search hit inside one page, so every citation names one page. If a chunk ran from the bottom of page 11 into the top of page 12, the search would have to cite two pages or guess. The PDF to Knowledge Pack offers three chunk sizes, with about 15% word overlap inside a page.
| Setting | Approximate words per chunk | What it trades off |
|---|---|---|
| Small | about 120 | A specific passage can rank first, but a long answer is more likely to be split. |
| Medium (default) | about 220 | A middle ground between precision and context. |
| Large | about 380 | More context per result, and more text to read for each hit. |
BM25 is a keyword ranking formula. A chunk scores higher when it contains a query word, when that word appears more often, when the word is rare across the collection, and when the chunk is shorter than average. Robertson and Zaragoza's 2009 review calls it the "term-weighting and document-scoring function" that is the best-known form of their model [review copy]. A common statement of the score for a chunk D and a query Q is below; Wikipedia gives it as a secondary source [Okapi BM25], so check it against a primary source before you build on it.
score(D,Q) = sum over q_i of
IDF(q_i) * f * (k1 + 1)
/ (f + k1 * K)
where K = 1 - b + b * |D| / avgdl
Here f is how often the query word appears in the chunk, |D| is the chunk's length, avgdl is the average chunk length, and IDF is the inverse document frequency, which gives rare words more weight. The formula also limits repetition: the review says a term's contribution "cannot exceed a saturation point". The table uses invented chunks, sets IDF to 1 to isolate length and repetition, and assumes an average length of 100 words, k1 = 1.2 and b = 0.75.
| Chunk | Words in chunk | Times the query word appears | Score |
|---|---|---|---|
| A | 50 | 1 | 1.26 |
| B | 100 | 1 | 1.00 |
| C | 200 | 1 | 0.71 |
| D | 100 | 3 | 1.57 |
The shortest chunk with one occurrence (A) scores highest, because the length term normalises the count. Chunk D repeats the word three times and scores 1.57, not 3.00. These are arithmetic results, not measured search results.
The two constants have defaults. Elasticsearch documents k1 with "The default value is 1.2" and b with a default of 0.75 [Elasticsearch similarity settings], and Lucene 9.11.0 uses the same pair [Lucene 9.11.0]. Defaults are not optimal settings. The review says that "many experiments suggest a somewhat lower value of k1 and a somewhat higher value of b", and its example "b = 0.5 and k1 = 2" is an example, not a default. Use 1.2 and 0.75 as a starting point.
How to write a page citation you can check
Cite the page the sentence sits on, and say which page number you mean. A PDF page number is the page's position in the file, while the number printed on the page can differ, for example after a cover or front matter. The sources here do not cover printed page labels.
For a direct quote, Purdue OWL's APA summary says to "include the page number at the end of the parenthetical citation", as in "(Jones, 1998, p. 199)" [Purdue OWL: APA in-text citations]. Use "p." for one page, "pp." for several, and an en dash for a range. The examples below use an invented title and passage, and their label formats are not APA, which puts the author's name in the parenthetical.
- Short label:
[Quarterly Report, p. 12] - With a known year:
(Quarterly Report, 2026, p. 12) - Quote in Markdown:
> The reserve must not fall below 20 percent. — Quarterly Report, p. 12
Open the page and read the sentence before you quote it. A search ranks likely passages; it does not show that a passage supports your claim.
What PDF text extraction cannot promise
Extraction returns the text the file stores, and the file's order is not always the reading order. In tagged PDFs, which carry a logical structure tree, the PDF 1.7 specification says the two orders "are logically distinct and may or may not coincide" [PDF 32000-1:2008]. Its note on glyph grouping adds that, in some cases, extracted text "can vary depending on the grouping of glyphs into strings" [PDF 32000-1:2008]. So two readers may return different text for the same page.
The PDF to Knowledge Pack reads pages with PDF.js, which returns text for one page at a time through the page object's getTextContent method [PDF.js PDFPageProxy documentation]. The tool then rebuilds lines from those items, so the view is a rebuild, not the original layout.
| What you see | Likely cause | What to do |
|---|---|---|
| Columns or sentences in an unexpected order | The file's text order can differ from the visual order. | Open the page and check the sentence before you quote it. |
| A page flagged "no text layer (scanned or image-only?)" | The tool flags pages with fewer than 25 characters. That threshold is its own choice, so the flag is a prompt to look, not proof. | If the check panel flags pages with no text layer, run OCR on the file elsewhere first. Tesseract is an open-source OCR engine that extracts printed text from images [Tesseract 5.x manual]. The PDF tool does not run OCR. |
| A word search misses letters inside a ligature such as "fi" | Ligature glyphs need a Unicode mapping; the spec's ToUnicode example maps ff, fi and ffl to multi-character strings. | Search for "fi", "fl" and "ffl" to see whether ligatures came through. |
The spec also says that in some situations a writer "may be unable to determine correct page content order", and it provides a way to mark such content as suspect [PDF 32000-1:2008]. Tags do not guarantee the order you expect, so read the page itself.
What "nothing is uploaded" means and how to check it
For this tool, it means the tool never sends your PDF anywhere. The site's promo banner is separate and never receives your file. A file input lets the user "choose one or more files from their device storage", and MDN says the files "can be uploaded to a server" as a separate step [MDN: input type="file"]. Web content can also "read the contents of those files" once the user selects them [MDN: Using files from web applications].
Add a PDF or the built-in sample while online, open the Network panel in your browser's developer tools, clear the log, and run a search. Page loads still make requests, so look for any request that carries your file or its text. Then set the browser to offline and search again. The tool is designed so the file is read in your browser, but treat that as something to check, not something to trust. This is general information, not legal advice.
What a single offline pack is for
An offline pack is one HTML file holding the extracted text, the chunks, the search code and the citation data. You can open it from disk, with no server and no account, and search it again without re-reading the PDFs. It suits reference sets you revisit.
The pack lists each document's page count, the totals, and a SHA-256 hash of each source file. Compare a hash with your own copy to confirm it matches what was indexed; the file integrity guide explains hashes. The footer repeats that ordering and spacing may differ from the original. The tool accepts up to five files, 60 MB and 1,000 pages, and refuses an export above 25 MB. These are its own limits, not rules from a standard.
Common mistakes
- Quoting a citation you have not opened. Open the page first.
- Assuming two-column pages extract in reading order. Test a real two-column PDF before you rely on any sentence from it.
- Treating the BM25 defaults as tuned. k1 = 1.2 and b = 0.75 are defaults in two engines, not optima.
- Expecting a scan to be searchable. A page with no text layer returns no hits until you run OCR elsewhere.
- Pasting context into a cloud model. The pack keeps the file local. Pasting its text into a chat sends that text.
Common questions
Can I search a PDF offline in my browser?
Yes, when the search code runs in the browser and reads the file locally. Add a PDF or the built-in sample while online, set the browser to offline, and search again. A search that still works has not needed a server for that answer.
Is my PDF uploaded when I use an online PDF search tool?
It depends on the tool. Choosing a file only lets the page read it, and uploading is a separate step the page's code must perform. Watch the Network panel while you search for requests that carry your file.
Why does text copied from a PDF come out in the wrong order?
The file stores text in its own order, and that order can differ from the order you read on the page. For tagged PDFs, the PDF 1.7 specification says the two orders "may or may not coincide".
What is a page citation?
A page citation names the source and the page where a sentence appears, such as [Quarterly Report, p. 12]. Use "p." for one page and "pp." for several, with an en dash for a range. Add the year when you know it.
Does BM25 understand the meaning of my question?
No. BM25 scores passages by the words they share with the question and how those words are weighted. A passage that uses different words for the same idea ranks low. The BM25 versus embeddings guide compares word matching with meaning matching.
What should I do with a scanned PDF?
If the check panel flags a page with no text layer, run OCR in another tool first, then search its output. The PDF to Knowledge Pack flags pages with very little text but does not run OCR itself.
Sources and further reading
- PDF 32000-1:2008 (PDF 1.7) — Adobe Systems, 2008
- PDF.js home page — Mozilla, undated
- PDFPageProxy API documentation (draft) — Mozilla PDF.js, undated
- Robertson and Zaragoza, "The Probabilistic Relevance Framework: BM25 and Beyond" — Foundations and Trends in Information Retrieval, 2009
- Similarity settings (BM25) — Elastic, Elasticsearch Reference, current docs
- BM25Similarity — Apache Lucene 9.11.0 API documentation
- Okapi BM25 — Wikipedia, secondary source, read October 2026
- Tesseract User Manual (5.x) — Tesseract OCR project, undated
- input type="file" — MDN Web Docs, undated
- Using files from web applications — MDN Web Docs, undated
- APA in-text citations: the basics — Purdue OWL, undated