OCR บน PDF ใน OS X ด้วยเครื่องมือโอเพ่นซอร์สฟรี


16

หลังจากอ่านโพสต์บล็อกเหล่านี้:

และจากตัวอย่างด้านล่าง (จากส่วนสำคัญนี้ ) สำหรับ Linux ฉันคิดว่าฉันพบวิธีการ OCR PDF แบบหลายหน้าและรับ PDF ในผลลัพธ์ที่สามารถใช้ใน OS X ได้ส่วนใหญ่มีการอ้างอิงใน homebrew ( brew install tesseractและbrew install imagemagick) ยกเว้นหนึ่งhocr2pdfรายการ

ฉันไม่สามารถหาพอร์ตของมันสำหรับ OS X มีให้ใช้งานได้ไหม ถ้าไม่เป็นเช่นนั้น OCR หนึ่ง PDF แบบหลายหน้าสามารถและรับผลลัพธ์กลับมาอีกครั้งในรูปแบบ PDF หลายหน้าใน OS X โดยใช้เครื่องมือโอเพนซอร์สฟรีได้อย่างไร

#!/bin/bash

# This is a script to transform a PDF containing a scanned book into a searchable PDF.
# Based on previous script and many good tips by Konrad Voelkel:
# http://blog.konradvoelkel.de/2010/01/linux-ocr-and-pdf-problem-solved/
# http://blog.konradvoelkel.de/2013/03/scan-to-pdfa/
# Depends on convert (ImageMagick), pdftk and hocr2pdf (ExactImage).
# $ sudo apt-get install imagemagick pdftk exactimage
# You also need at least one OCR software which can be either tesseract or cuneiform.
# $ sudo apt-get install tesseract-ocr
# $ sudo apt-get install cuneiform
# To install languages into tesseract do (e.g. for Portuguese):
# $ sudo apt-get install tesseract-ocr-por

echo "usage: ./pdfocr.sh document.pdf ocr-sfw split lang author title"
# where ocr-sfw is either tesseract or cuneiform
# split is either 0 (already single-paged) or 1 (2 book-pages per pdf-page)
# lang is a language as in "tesseract --list-langs" or "cuneiform -l".
# and author, title are used for the PDF metadata.
#
# usage example:
# ./pdfocr.sh SomeFile.pdf tesseract 1 por "Some Author" "Some Title"
pdftk "$1" burst dont_ask
for f in pg_*.pdf
do
if [ "1" == "$3" ]; then
convert -normalize -density 300 -depth 8 -crop 50%x100% +repage $f "$f.png"
else
convert -normalize -density 300 -depth 8 $f "$f.png"
fi
done
rm pg_*.pdf

for f in pg_*.png
do
if [ "tesseract" == "$2" ]; then
tesseract -l $4 -psm 1 $f $f hocr
elif [ "cuneiform" == "$2" ]; then
cuneiform -l $4 -f hocr -o "$f.html" $f
else
echo "$2 is not a valid OCR software."
fi
hocr2pdf -i $f -r 300 -s -o "$f.pdf" < "$f.html"
done

pdftk pg_*.pdf cat output merged.pdf

pdftk merged.pdf update_info_utf8 doc_data.txt output merged+data.pdf
echo "InfoBegin" > in.info
echo "InfoKey: Author" >> in.info
echo "InfoValue: $5" >> in.info
echo "InfoBegin" >> in.info
echo "InfoKey: Title" >> in.info
echo "InfoValue: $6" >> in.info
echo "InfoBegin" >> in.info
echo "InfoKey: Creator" >> in.info
echo "InfoValue: PDF OCR scan script" >> in.info
in_filename="${1%.*}"
pdftk merged+data.pdf update_info_utf8 in.info output "$in_filename-ocr.pdf"

rm -r doc_data.txt in.info merged* pg_*

คำตอบ:


13

Tesseract 3.03+ ได้สร้างการรองรับ PDF output ซึ่งต้องมีการติดตั้ง leptonica คุณสามารถใช้: brew install tesseract --HEADเพื่อรับเวอร์ชันล่าสุดของ tesseract คุณจะต้องติดตั้ง ghostscript แต่ไม่จำเป็นต้องใช้ hocr2pdf

สคริปต์ต่อไปนี้ใช้ ghostscript เพื่อแยก PDF เป็น JPEG, tesseract เพื่อ OCR JPEG และหน้า PDF เดี่ยวออกและสุดท้าย ghostscript อีกครั้งเพื่อรวมหน้าเว็บกลับเป็น PDF เดียว

#!/bin/sh

y="`pwd`/$1"
echo Will create a searchable PDF for $y

x=`basename "$y"`
name=${x%.*}

mkdir "$name"
cd "$name"

# splitting to individual pages
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r300 -dTextAlphaBits=4 -o out_%04d.jpg -f "$y"

# process each page
for f in $( ls *.jpg ); do
  # extract text
  tesseract -l eng -psm 3 $f ${f%.*} pdf
  rm $f
done

# combine all pages back to a single file
gs -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile="../${name}_searchable.pdf" *.pdf

cd ..
rm -rf "${name}"

# Adapted from: http://www.morethantechnical.com/2013/11/21/creating-a-searchable-pdf-with-opensource-tools-ghostscript-hocr2pdf-and-tesseract-ocr/
# from http://www.ehow.com/how_6874571_merge-pdf-files-ghostscript.html
# bash tut: http://linuxconfig.org/bash-scripting-tutorial
# Linux PDF,OCR: http://blog.konradvoelkel.de/2013/03/scan-to-pdfa/

ใน Tesseract 4 tesseract $f ${f%.*} -l eng --psm 3 pdfนี้จะต้องมีการ
Robin Dinse

1

ฉันใช้tesseractบน OS x ด้วย เขียนเกี่ยวกับการทำงานอัตโนมัติในเวลาสั้น ๆ มันนี่


5
แม้ว่าลิงก์นี้อาจตอบคำถามได้ดีกว่าหากรวมส่วนสำคัญของคำตอบไว้ที่นี่และให้ลิงก์สำหรับการอ้างอิง คำตอบสำหรับลิงก์เท่านั้นอาจไม่ถูกต้องหากหน้าเว็บที่เชื่อมโยงมีการเปลี่ยนแปลง โปรดดูที่นี่ด้วย: apple.stackexchange.com/help/deleted-answers
bummi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.