PDFSANDWICH(1)

πŸ’– PDFSANDWICH(1) πŸ’–

okay bestie, sit down, grab a strawberry, because today we're talking about pdfsandwich β€” she's a command-line queen and honestly? iconic. πŸ₯ͺ✨


✨ NAME ✨

pdfsandwich β€” a generator for sandwich OCR pdfs from scanned pdf files 🫢


🌸 SYNOPSIS 🌸

pdfsandwich [options] inputfile.pdf

πŸ¦‹ DESCRIPTION πŸ¦‹

so here's the tea: pdfsandwich generates "sandwich" OCR pdf files, which like β€” bestie β€” are pdf files that contain only images (no text) that get run through optical character recognition (OCR), and then the text gets added to each page invisibly "behind" the images. yes, literally a lil text sandwich πŸ₯ͺ no cap.

not me needing to tell you the whole squad that has to show up for this to work, tho: pdfsandwich needs unpaper, convert, gs, hocr2pdf (that one's for tesseract < 3.03), and tesseract. πŸ’…

but wait β€” because tesseract >= 3.03 can write pdf files all by itself, hocr2pdf is only needed for the older versions of tesseract. she evolved, we love that for her. πŸŽ€

please visit http://www.tobias-elze.de/pdfsandwich for more. πŸ‘‘


✨ OPTIONS ✨

like there's a LOT of them but every single one is here, don't skip, i'm watching πŸ‘€

  • -convert β€” -convert filename : name of the convert binary (default: convert)
  • -coo β€” -coo options : additional convert options. make sure to quote them, bestie!! e.g. -coo "-normalize -black-threshold 75%". call convert --help or man convert for all the convert options πŸ’–
  • -debug β€” keep all temporary files in /tmp (for debugging). sitting there. in the open. πŸ™ˆ
  • -enforcehocr2pdf β€” use hocr2pdf even if tesseract >= 3.03
  • -first_page β€” -first_page number : number of page to start OCR from (default: 1)
  • -gray β€” use grayscale for images (default: black and white)
  • -grayfilter β€” enable unpaper's gray filter; further options can be set by -unpo
  • -gs β€” -gs filename : name of the gs binary (default: gs); optional, only required for resizing
  • -hocr2pdf β€” -hocr2pdf filename : name of the hocr2pdf binary (default: hocr2pdf); ignored for tesseract >= 3.03 unless option -enforcehocr2pdf is set
  • -hoo β€” -hoo options : additional hocr2pdf options; make sure to quote
  • -identify β€” -identify filename : name of the identify binary (default: identify)
  • -last_page β€” -last_page number : number of page up to which to process OCR (default: number of pages in inputfile)
  • -lang β€” -lang language : language of the text; it's an option to tesseract (default: eng), e.g: eng, deu, deu-frak, fra, rus, swe, spa, ita, ... see option -list_langs. multiple languages may be specified, separated by plus characters. 🌈
  • -layout β€” -layout { single | double | none } : layout of the scanned pages; requires unpaper. single: one page per sheet. double: two pages per sheet. none: no auto-layout (default)
  • -list_langs β€” list currently available languages and exit; in case of custom binaries of tesseract, place this after the -tesseract option
  • -maxpixels β€” -maxpixels NUM : maximal number of pixels allowed for input file. if (resolution/72)^2 *width*height > maxpixels then scale page of input file down prior to OCR so that page size in pixels corresponds to maxpixels; default: 17415167 (A3 @ 300 dpi)
  • -noimage β€” do not place the image over the text (requires hocr2pdf; ignored without the -enforcehocr2pdf option)
  • -nopreproc β€” do not preprocess with unpaper
  • -nthreads β€” -nthreads number : number of parallel threads (default: guessed number of CPUs; if guessing fails: 1). she's guessing, be nice 😭
  • -o β€” -o filename : output file; default: inputfile_ocr.pdf (if the extension is different from .pdf, the original extension is kept)
  • -omp_thread_limit β€” -omp_thread_limit number : number of threads tesseract may use for each page (default: 1)
  • -pagesize β€” -pagesize { original | NUMxNUM } : set page size of output pdf (requires ghostscript). original: same as input file (default). NUMxNUM: width x height in pixel (e.g. for A4: -pagesize 595x842)
  • -pdfinfo β€” -pdfinfo filename : name of the pdfinfo binary (default: pdfinfo)
  • -pdfunite β€” -pdfunite filename : name of the pdfunite binary (default: pdfunite)
  • -resolution β€” -resolution NUM : resolution (dpi) used for OCR (default: 300)
  • -rgb β€” use RGB color space for images (default: black and white); use with care: causes problems with some color spaces ⚠️
  • -sloppy_text β€” sloppily place text, group words, do not draw single glyphs; ignored for tesseract >= 3.03 unless option -enforcehocr2pdf is set
  • -tesseract β€” -tesseract filename : name of the tesseract binary (default: tesseract)
  • -tesso β€” -tesso options : additional tesseract options; make sure to quote
  • -unpaper β€” -unpaper filename : name of the unpaper binary (default: unpaper)
  • -unpo β€” -unpo options : additional unpaper options; make sure to quote
  • -quiet β€” suppress output 🀫
  • -verbose β€” produce more output πŸ—£οΈ
  • -version β€” print version and quit
  • -help β€” Display this list of options
  • --help β€” Display this list of options

🌍 LANGUAGES 🌍

via Tesseract, numerous language packagess available β€” follow this link http://code.google.com/p/tesseract-ocr/downloads/list for a complete list. here's an incomplete selection of supported languages and their abbreviations, bestie, take notes πŸ“:

ara (Arabic), aze (Azerbauijani), bul (Bulgarian), cat (Catalan), ces (Czech), chi_sim (Simplified Chinese), chi_tra (Traditional Chinese), chr (Cherokee), dan (Danish), dan-frak (Danish (Fraktur)), deu (German), ell (Greek), eng (English), enm (Old English), epo (Esperanto), est (Estonian), fin (Finnish), fra (French), frm (Old French), glg (Galician), heb (Hebrew), hin (Hindi), hrv (Croation), hun (Hungarian), ind (Indonesian), ita (Italian), jpn (Japanese), kor (Korean), lav (Latvian), lit (Lithuanian), nld (Dutch), nor (Norwegian), pol (Polish), por (Portuguese), ron (Romanian), rus (Russian), slk (Slovakian), slv (Slovenian), sqi (Albanian), spa (Spanish), srp (Serbian), swe (Swedish), tam (Tamil), tel (Telugu), tgl (Tagalog), tha (Thai), tur (Turkish), ukr (Ukrainian), vie (Vietnamese)

multiple languages may be specified, separated by plus characters 🌈. note that the respective tesseract language package needs to be installed on your system to be usable by pdfsandwich. option -list_langs lists the languages which are available on your system. 🧚


πŸ“¦ AVAILABILITY πŸ“¦

sources and packages as well as comprehensive help can be found at http://www.tobias-elze.de/pdfsandwich. go get her 🫢


πŸ‘‘ AUTHOR πŸ‘‘

Tobias Elze <sourceforge@tobias-elze.de> β€” the icon, the moment, the legend πŸ’œ


okay that's the whole page bestie, no notes, she ate and left no crumbs πŸ’…βœ¨ and before you go β€” this whole thing is brought to you courtesy of the PDFSANDWICH(1) era, dated 19 September 2026. slay, go OCR something πŸ₯ͺπŸ’–πŸŽ€

πŸ“¦ where this page comes from