
如何給掃描 PDF 加上可搜索文本層OCRmyPDF 快速上手指南【免費下載鏈接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched項目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF掃描件有一個讓人抓狂的屬性看起來是文檔搜起來是圖片。你在 Adobe 閱讀器里按 CtrlF 找發(fā)票兩個字半天等不到結(jié)果——因為那個 PDF 里根本沒有文字只有一頁頁像素。手動轉(zhuǎn)圖再 OCR文本位置全亂、重音符號丟失文件還腫得嚇人。OCRmyPDF命令行工具名ocrmypdf就是為這件事做的一條命令在原掃描 PDF 上疊一層精確對齊的 OCR 文字。圖片不動文字可搜、可抄、可復(fù)制默認還輸出符合 ISO 標準的 PDF/A-2b 存檔格式。快速認識 OCRmyPDF一條命令補上缺失的文字層它的工作方式可以概括成三步用 Ghostscript 把每一頁柵格成圖像交給 Tesseract 識別出文字和坐標再把識別結(jié)果以不可見的方式貼回原 PDF 對應(yīng)位置。默認自動利用全部 CPU 核心并行處理還順手做圖像壓縮輸出文件經(jīng)常比輸入還小上面的截圖里8 頁文檔總體積節(jié)省了 53.8%。和手動處理或者自己拼腳本相比它的差別在于維度手動/腳本拼湊OCRmyPDF文字位置容易錯位復(fù)制粘貼拿到亂序文本坐標級對齊復(fù)制即所得原圖畫質(zhì)重編碼后普遍降質(zhì)原頁保留可跳過柵格化頁面多語言各引擎表現(xiàn)不一跟隨 Tesseract 語言包上百種語言存檔格式基本沒有默認 PDF/A-2b可用 veraPDF 校驗并發(fā)自己寫--jobs一個參數(shù)搞定一句話它把掃描 → 識別 → 對齊 → 存檔校驗整條鏈路的臟活都接管了你只負責(zé)喂文件。5 分鐘裝好 OCRmyPDFLinux、macOS、Windows 最短路徑OCRmyPDF 本身是 Python 程序但它調(diào)用兩個外部引擎Tesseract識別和 GhostscriptPDF 柵格化與存檔轉(zhuǎn)換。三者齊活才算裝好。平臺最短路徑說明Debian/Ubuntusudo apt install ocrmypdf一條命令裝齊依賴macOSbrew install ocrmypdfHomebrew 同步維護Windows / 通用pip install ocrmypdf需另裝 Tesseract 與 Ghostscript并加入 PATHPython 要求 3.11 及以上當(dāng)前發(fā)布版為 17.8.1Tesseract 最低 4.1.1Ghostscript 最低 9.54。裝完跑三條命令驗證都能打印版本號就萬事大吉ocrmypdf --version tesseract --version gs --version跑通第一條 OCR 命令最小示例與中文識別命令怎么寫最小可用示例只有三個詞ocrmypdf 掃描件.pdf 可搜索.pdf終端會滾動進度條掃描內(nèi)容、按頁 OCR、PDF/A 轉(zhuǎn)換、圖像壓縮。結(jié)束后提示 Output file is a PDF/A-2b (as expected)打開輸出文件復(fù)制一段文字就成了。中文識別的關(guān)鍵是-l參數(shù)指定語言代碼chi_simocrmypdf -l chi_sim 中文合同.pdf 輸出.pdf如果輸入是圖片而不是 PDF需要告訴它拍攝 DPIocrmypdf --image-dpi 300 合同照片.png 合同.pdf識別質(zhì)量不佳時先懷疑語言包或參數(shù)而不是工具本身。常用參數(shù)速查語言、輸出格式、預(yù)處理與并發(fā)類別參數(shù)作用語言-l engchi_sim識別語言連接多語言輸出--output-typeauto默認盡力輸出 PDF/A/pdfa強制 PDF/A-2b/pdf改動最小/none只要文本已有文字--force-ocr全部重做舊層覆蓋已有文字--skip-text含文字頁原樣跳過已有文字--redo-ocr移除舊 OCR 層后重識別預(yù)處理-r/-d/--clean旋轉(zhuǎn)糾正 / 去傾斜 / 圖像清理性能-j 4指定 CPU 核心數(shù)默認全部元數(shù)據(jù)--title/--author寫入文檔屬性實用進階sidecar 文本、參數(shù)組合與批量處理sidecar 純文本輸出。識別結(jié)果除了嵌進 PDF還可以導(dǎo)出一份 txt用于建索引庫或核對識別質(zhì)量ocrmypdf --sidecar 合同.pdf 輸出.pdf # 生成 輸出.pdf.txt參數(shù)后加文件名可自定義路徑參數(shù)組合思路。檔案級處理-r -d --clean-final加--output-type pdfa再掛上--title、--author追求文件最小--output-type pdf改動最克制。組合沒有標準答案按要存檔還是要小文件選一邊即可。批量處理。一個目錄幾十個文件shell 循環(huán)就夠for f in *.pdf; do ocrmypdf --skip-text $f ocr_$f || echo $f 失敗 done倉庫里還帶了一個batch.py腳本misc/batch.py適合需要按頁碼范圍選擇性識別的場景用法見 docs/batch.md。常見問題排查報錯信息對照與修復(fù)方法1. page already has text現(xiàn)象提示頁面已含文字直接中止。原因文件本身已有文本層或水印工具默認拒絕重復(fù)勞動。解法確認要重做就加--force-ocr只想處理掃描件頁就--skip-text想升級舊層用--redo-ocr。2. not a valid PDF現(xiàn)象輸入文件被判為無效。原因PDF 截斷或損壞多為拷貝未完成。解法重新傳輸或先讓 Ghostscript 重寫一遍再喂進來。3. Tesseract cannot open its config file hocr現(xiàn)象Tesseract 靜默無輸出。原因手動拼裝的 tessdata 目錄缺少configs/子目錄。解法從系統(tǒng)包管理器重裝 Tesseract或補全 configs 文件。4. 語言代碼報錯現(xiàn)象提示找不到指定語言。原因?qū)?yīng)的 Tesseract 語言包沒裝比如chi_sim需要 tesseract-ocr-chi-sim。解法裝對應(yīng)語言包用tesseract --list-langs確認已生效。5. 大頁面內(nèi)存不足現(xiàn)象中途 OOM任務(wù)被殺。原因高 DPI 大頁一次性進內(nèi)存。解法調(diào)小-j的并發(fā)數(shù)或先把大文件分頁再處理。更多錯誤對照見 docs/errors.md安裝細節(jié)見 docs/installation.md。寫在最后從一條ocrmypdf 輸入.pdf 輸出.pdf開始把掃描件變成可搜的文檔只要幾十秒。語言用-l指定存檔交給默認的 PDF/A批量交給 shell。遇到報錯別慌先看上面的對照表想深入docs/index.md 是從入門到 API 的完整文檔入口。工具已經(jīng)足夠成熟剩下的只是把文件喂給它。【免費下載鏈接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched項目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考