การเพิ่มข้อมูล OCR ให้กับ PDF


28

ฉันมีสแกนเอกสารที่มีคุณภาพดี การสแกนดังกล่าวอยู่ในรูปแบบ pdf

ฉันจะเพิ่มข้อมูล ocr ใน pdf ได้อย่างไรเพื่อให้สามารถค้นหาได้ โดยการค้นหาได้ฉันหมายความว่าเป้าหมายคือเมื่อดู pdf ด้วย evince CTRL-F จริง ๆ แล้วทำให้ฉันสามารถค้นหาในเนื้อหา pdf ได้



4
@ Jakob ฉันไม่คิดว่ามันเป็นคนหลอกลวงเรากำลังถามสิ่งต่าง ๆ คำถามอื่นเกี่ยวกับการดึงข้อความจาก pdf บางไฟล์ (เช่นการสร้างไฟล์ txt ที่สอดคล้องกัน) ในขณะที่คำถามของฉันเกี่ยวกับการแก้ไข PDF เพื่อเพิ่มข้อมูล ocr และทำให้ฟังก์ชั่นการค้นหาในโปรแกรมอ่าน pdf ฉันจะอธิบายคำถาม
fdierre

คุณใช้อะไรและสแกนเอกสารอย่างไร
มิทช์

@Mitch ฉันใช้สำนักงานของฉัน Ricoh Aficio MP-C2500 เครื่องพิมพ์ / เครื่องถ่ายเอกสาร / สแกนเนอร์ซึ่งมีตัวป้อนเอกสารที่ดีมาก :-)
fdierre

สแกนและ / หรือซอฟต์แวร์ OCR
มิทช์

คำตอบ:


21

pdfsandwich

ทำในสิ่งที่คุณต้องการและมอบแพ็คเกจ deb ของ Ubuntu มันใช้ tesseract เป็นเครื่องมือ OCR การโทรต่อไปนี้เพิ่มเลเยอร์ข้อความใน PDF ที่สแกนของคุณ:

pdfsandwich scanned.pdf

ต่อไปนี้ไม่เหมือนกัน แต่มีภาษาอื่น (รหัส ISO 639-2, tesseract-ocr-LANGCODEแพ็คเกจดาวน์โหลด) และการตั้งค่าเค้าโครง:

pdfsandwich  -verbose -lang spa -layout single scanned.pdf

ถ้าคุณได้รับข้อผิดพลาดใด ๆ โปรดดาวน์โหลดรุ่นล่าสุด deb จาก Sourceforge

คำเตือน:ฉันเป็นผู้พัฒนาของ pdfsandwich และจึงลำเอียงอย่างเห็นได้ชัด


6
มันเยี่ยมมากจริงๆขอบคุณ อย่างไรก็ตามดูเหมือนว่าจะปรับเปลี่ยนภาพดูเหมือนว่าจะมีหน้ากากที่ไม่คมชัดเหนือสิ่งเหล่านี้หรือบางสิ่งบางอย่าง มีวิธีที่จะออกจากภาพเหมือนเดิมหรือไม่? ในอินสแตนซ์เฉพาะของฉันตัวกรองยังสามารถลบแถบจากเศษส่วนสองสามอันในบางสมการ ทุกสิ่งทุกอย่างทำงานสวยดี แต่ ...
naught101

แพ็คเกจคุณภาพต่ำ: `ผลการตรวจสอบ Lintian สำหรับ /tmp/pdfsandwich_0.1.3_amd64.deb: E: pdfsandwich: ไฟล์ควบคุมมีสิทธิ์ไม่ดี md5sums 0664! = 0644 E: pdfsandwich: ควบคุมไฟล์มีเจ้าของไม่ดี md5sums james / james! = root / root E: pdfsandwich: mis-file-owner-uid-or-gid usr / 1000/1000 E: pdfsandwich: mis-file-owner-uid-or-gid usr / bin / 1000 / 1,000 E: pdfsandwich: ไฟล์ผิดเจ้าของ -uid-or-gid usr / bin / pdfsandwich ...
AB

ดาวน์โหลดรุ่นล่าสุดจากเอสเอฟตราสารหนี้ทุกประเภท หากคุณได้รับข้อผิดพลาดในตอนท้ายอาจเกี่ยวข้องกับ ghostscript (v0.1.4) pdfuniteตอนนี้ใช้ v0.1.6
Pablo

1
@PabloBianchi มีวิธีใดในการพิสูจน์อักษรด้วยตนเองของข้อความ OCRed โดยใช้ pdfsandwitch? ฉันทำสิ่งนี้กับเอกสารภาษาสวีเดนบางส่วนและใช้งานได้ดียกเว้นการสะกดผิด (อาจเป็นเพราะแบบอักษรของต้นฉบับ) ซึ่งจะง่ายต่อการแก้ไขหากเป็นไฟล์ข้อความ แต่ฉันจะทำสิ่งนี้ใน PDF ที่เป็นผลลัพธ์ได้อย่างไร ?
zrajm

@zrajm คุณสามารถใช้พารามิเตอร์ pdfsandwichบางส่วนเพื่อการรับรู้ที่ดีขึ้นในขั้นตอน OCR หากต้องการแก้ไขข้อความที่ซ่อนอยู่หลังภาพเป็น PDF คุณสามารถแก้ไขเลเยอร์กล่องข้อความด้วย LibreOffice Draw, Inkscapeหรือเครื่องมือแก้ไข PDF ใด ๆ หากคุณพบวิธีที่ดีกว่าโปรดโพสต์ไว้ที่นี่ DaH jImej!
ปาโบล


4

ฉันพบทางออกที่ไม่เหมาะ แต่เป็นวิธีที่มีประสิทธิภาพมาก

ฉันใช้PDF X-Change Viewerผ่านทางไวน์ มันมีคุณสมบัติ OCR ซึ่งจะเพิ่มเลเยอร์ข้อความให้กับไฟล์ PDF ที่ใช้ภาพที่มีอยู่

ดังนั้นคุณสามารถค้นหาและคัดลอกข้อความจากเลเยอร์ที่มองไม่เห็นนี้

ป้อนคำอธิบายรูปภาพที่นี่


2

สำหรับการแก้ปัญหาบรรทัดคำสั่งคุณสามารถใช้pdfocr

โดยสรุปให้ติดตั้งซอฟต์แวร์:

$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:gezakovacs/pdfocr
$ sudo apt-get update
$ sudo apt-get install pdfocr

จากนั้นเรียกใช้ pdfocr:

$ pdfocr -i scanned.pdf -o scanned.with.search.pdf

ที่ทำงานสำหรับฉันใน Ubuntu 12.04 LTS


6
Github ที่นี่: github.com/gkovacs/pdfocr แต่สิ่งนี้มีปัญหาเช่นเดียวpdfsandwichกับที่มันแก้ไข / บีบอัดไฟล์ PDF ที่มีภาพความละเอียดสูงโดยทั่วไปจะทำลายข้อมูลภาพต้นฉบับบางส่วน
jmiserez

2

โซลูชันที่สามารถนำไปใช้งานได้อย่างง่ายดายและให้ไฟล์ PDF เอาต์พุตที่มีคุณภาพเดียวกันกับไฟล์อินพุตพร้อมขนาดที่เหมาะสมคือ OCRmyPDF:

https://github.com/jbarlow83/OCRmyPDF


ฉันมีผลลัพธ์ที่ยอดเยี่ยมกับสคริปต์ของคุณ ต่างจาก pdfocr โดย Geza Kovacs ไม่จำเป็นต้องมีห้องสมุดพิเศษ (ยากที่จะคอมไพล์ใน Linux distros!) ขอขอบคุณ!
Maxim

0

นี่คืออย่างรวดเร็วของฉันและวิธีการแก้ปัญหาสกปรกบนพื้นฐาน ImageMagick ของconvert, tesseract, parallelและpdftk(ทั้งหมดที่มีอยู่ในการกระจาย Debian-based) ส่วนใหญ่จะขึ้นอยู่กับโพสต์บล็อกนี้

#!/bin/sh -ex

density=${2:-"300"} # default to 300 DPI if 2nd parameter is not given

convert -monitor -density "$density" "$1" -monochrome -compress lzw -alpha deactivate page_%05d.tif
parallel --bar "tesseract {} {.} pdf 2>/dev/null" ::: page_*.tif
pdftk page_*.pdf cat output "${1%.*}-ocred.pdf" compress

# Cleanup temp files
rm page_?????.tif page_?????.pdf

0

สำหรับไดเรกทอรีทั้งหมดที่มีไฟล์ ppm คุณสามารถใช้สคริปต์นี้ ppm2ocrpdf.sh

#!/bin/sh

mkdir .pdf
for f in *.ppm; do
    echo " Running convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf"
    convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf
    echo " Running tesseract -l deu "$f" "$f" pdf"
    tesseract -l deu "$f" "$f" pdf
    echo " Running pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf"
    pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf
    echo " Running rm "$f"ppm.pdf"
    rm "$f"ppm.pdf
    echo " Running rm "$f".pdf"
    rm "$f".pdf
done
echo " Running pdftk *.pdf cat output ../outdocument.pdf"
pdftk ./.pdf/*.pdf cat output outOcrDocument.pdf
echo " Running rm ./.pdf/*.pdf"
rm ./.pdf/*.pdf
echo " Running rmdir .pdf"
rmdir .pdf
echo "Done"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.