วิธีแปลงไฟล์ PDF เป็นข้อความค้นหาแบบ PDF ได้อย่างไร


20

ฉันมีเอกสารที่สแกนจำนวนมากเป็น pdf และฉันต้องการค้นหาพวกเขา ฉันจะทำสิ่งนั้นได้อย่างไร

โดยพื้นฐานแล้วฉันต้อง OCR pdf แล้วผสมผสานข้อความที่แยกกลับมาเป็น pdf ใหม่ ฉันได้ลองใช้โซลูชันที่แตกต่างกันจำนวนหนึ่งอย่างไม่ถูกต้อง (รวมถึงโซลูชันที่พบในการเพิ่มข้อมูล OCR ให้เป็น PDF )

  1. pdfocr (ซึ่งให้ปัญหานี้กับฉัน: https://github.com/gkovacs/pdfocr/issues/7 )
  2. pdfsandwich (ซึ่งศูนย์ซอฟต์แวร์แจ้งว่าเป็นแพ็คเกจที่ไม่ดีและไม่ควรติดตั้ง)
  3. OCRfeeder (ในศูนย์ซอฟต์แวร์) ส่งออกเป็นอย่างดี แต่จะไม่ตอบสนองเมื่อส่งออกเป็น pdf
  4. Gscan2pdfส่งออกรูปภาพสีดำ (แต่สามารถค้นหาได้) ตามที่รายงานในการสนทนานี้
  5. ฉันไม่คิดว่าผู้ชม Pdfxchange สามารถจัดการการทำงานของ ocr ได้อย่างรวดเร็วบนไฟล์มากกว่า 500 หน้า

มีแพ็คเกจซอฟต์แวร์ที่ฉันไม่ทราบหรือไม่? หรือสคริปต์ที่ทำสิ่งนี้?


3
ฉันยังไม่ได้ลองด้วยตัวเอง แต่ฉันเคยเห็นโครงการนี้ได้รับการแนะนำในอดีต
Glutanimate

pdf2searchablepdfผมเพิ่งเขียน tesseractมันอาศัย มันใช้งานได้ดี ใช้งานง่ายสุด ๆ ดูที่นี่ askubuntu.com/a/1187881/327339
Gabriel Staples

คำตอบ:


12

Ubuntu <16.04

ตามความคิดเห็นของ Glutanimate ฉันได้พบวิธีแก้ปัญหาการทำงาน มันเป็นสคริปต์ OCRmyPDF

git clone https://github.com/jbarlow83/OCRmyPDF
cd OCRmyPDF
sh ./OCRmyPDF.sh -h  # to see the usage

หากคุณได้รับข้อความแจ้งว่าคุณควรติดตั้ง GNU ขนาน สามารถทำได้ (ติดตาม/ubuntu//a/298598/115155 ) ด้วย (บรรทัดที่สองเป็นทางเลือกและขึ้นอยู่กับรสชาติและรุ่นของคุณ):

sudo apt-get install parallel
sudo rm /etc/parallel/config

ในที่สุดคุณสามารถ OCR pdf ของคุณด้วยคำสั่ง:

sh ./OCRmyPDF.sh input.pdf output.pdf  # change input and output to the files you want

หากดูเหมือนว่าคำสั่งไม่ตอบสนองคุณสามารถเพิ่ม verbosity โดยใช้-vแฟล็ก (ซึ่งสามารถใช้แบบเพิ่มหน่วยเป็น-vvหรือ-vvv) การทดสอบผลลัพธ์ให้ดีที่สุดควรใช้ pdf ที่สั้นกว่า คุณสามารถร่น PDF ได้ดังนี้:

pdftk A=input.pdf cat A1-5 output output.pdf

Ubuntu> = 16.04

ในฐานะของ Ubuntu 16.04 OCRmyPDF ได้กลายเป็นใช้ได้ผ่านฉลาด เพียงแค่วิ่ง

sudo apt install ocrmypdf
ocrmypdf -h   # to see the usage

ในที่สุดคุณสามารถ OCR pdf ของคุณด้วยคำสั่ง:

ocrmypdf input.pdf output.pdf  # change input and output to the files you want

หากดูเหมือนว่าคำสั่งไม่ตอบสนองคุณสามารถเพิ่ม verbosity โดยใช้-vแฟล็ก (ซึ่งสามารถใช้แบบเพิ่มหน่วยเป็น-vvหรือ-vvv) การทดสอบผลลัพธ์ให้ดีที่สุดควรใช้ pdf ที่สั้นกว่า คุณสามารถร่น PDF ได้ดังนี้:

pdftk A=input.pdf cat A1-5 output output.pdf

หากคุณมีคำถามใด ๆ ให้ดูในGithub Repoใหม่


คุณจะยอมรับคำตอบของคุณเพื่อแก้ไขหรือไม่ (เพื่อที่จะไม่ได้อยู่ในรายชื่อที่ไม่ได้ตอบ)
ผู้ใช้ที่ลงทะเบียน

เพียงแค่sudo -H pip install git+https://github.com/jbarlow83/OCRmyPDFสำหรับ Ubuntu 16.04
มาร์ติน Thoma

1
สำหรับ Ubuntu 16.10 sudo apt install ocrmypdfและต่อมาคุณก็สามารถทำได้
endolith

6

@ don.joey ตอบกลับด้วยสคริปต์ocrmypdf อย่างไรก็ตามสามารถติดตั้งได้ทันที (ตั้งแต่ 16.10 เป็นต้นไป)

sudo apt install ocrmypdf

จากนั้นคุณต้องติดตั้งภาษาtesseract ที่คุณต้องการ

หากต้องการแสดงรายการภาษาที่อยู่ในระบบของคุณให้พิมพ์:

tesseract --list-langs

ในกรณีที่คุณพลาดติดตั้ง ตัวอย่างเช่น

sudo apt install tesseract-ocr-spa

ตอนนี้คุณสามารถสร้าง PDF ที่ค้นหาได้ (ซึ่งคุณภาพจะแตกต่างกันไปขึ้นอยู่กับเอกสารที่สแกน) ด้วยคำสั่งดังต่อไปนี้

ocrmypdf -l 'spa' old.pdf new.pdf

แน่นอนคุณสามารถตรวจสอบหน้า man ของมันสำหรับตัวเลือกเพิ่มเติมบางอย่าง


ขอให้ upvote ของฉัน!
don.joey

4

pdfsandwichทำงานนี้อย่างแน่นอน ฉันไม่ทราบว่ามีแพคเกจที่ให้ไว้ในศูนย์ซอฟต์แวร์ แต่ฉันให้แพ็คเกจ deb ของ Ubuntu บนเว็บไซต์โครงการ (ดูhttp://www.tobias-elze.de/pdfsandwich/สำหรับรายละเอียด) รวมถึงเวอร์ชันล่าสุด (0.1.2) ซึ่งปัจจุบันยังไม่น่าจะอยู่ในศูนย์ซอฟต์แวร์ใด ๆ

หากคุณมีไฟล์สแกนscanned_file.pdfเพียงโทร

pdfsandwich scanned_file.pdf

ซึ่งสร้างไฟล์scanned_file_ocr.pdfโดยมีข้อความที่รู้จักเพิ่มลงในหน้าสแกน

เมื่อเปรียบเทียบกับโซลูชันที่มีอยู่ส่วนใหญ่จะตรวจหาเวอร์ชันของ tesseract ที่ติดตั้งโดยอัตโนมัติและปรับพฤติกรรมตามนั้น นอกจากนี้ยังทำการประมวลผลล่วงหน้าของภาพที่สแกนก่อนกระบวนการ OCR เช่นการบิดเบี้ยวหรือการลบขอบมืดเป็นต้นซึ่งสามารถปรับปรุงการจดจำตัวอักษรแบบออพติคอลได้อย่างมาก

การปฏิเสธความรับผิด: ฉันเป็นผู้พัฒนาpdfsandwichและดังนั้นจึงมีอคติอย่างมาก


มันฟังดูดี แต่ทำไม pdfsandwich เวอร์ชัน 0.1.4 ถึงติดตั้งโดยใช้ apt-get แปลงตัวละครแต่ละตัวให้เป็นสี่เหลี่ยมสีดำสำหรับฉันบน Ubuntu 16.04?
Valentas

1
เป็นการยากที่จะตอบโดยไม่มีรายละเอียดเพิ่มเติม ก่อนอื่นฉันขอแนะนำให้ใช้เครื่องมือรุ่นใหม่กว่านี้ รุ่นปัจจุบันคือ 0.1.6 คุณสามารถค้นหาแพ็คเกจ deb สำหรับ Ubuntu บนเว็บไซต์ ประการที่สองหากไม่ได้ผลคุณอาจต้องการใช้ตัวเลือก --verbose เพื่อรับรายละเอียดเพิ่มเติมและใช้รายละเอียดเหล่านี้เพื่อรายงานข้อผิดพลาด
Tobias Elze

สองประเด็นสำหรับฉัน แปลง: พยายามที่จะดำเนินการที่ไม่ได้รับอนุญาตจากนโยบายความปลอดภัย `PDF '@ ข้อผิดพลาด / con.c.c / IsCoderAuthorized / 408 ดังนั้นฉันต้องติดตั้ง imagemagick จากแหล่งที่ดาวน์โหลดจากimagemagick.org/script/install-source.php จากนั้นฉันได้รับข้อผิดพลาดขณะโหลดไลบรารีที่แชร์: libMagickCore-7.Q16HDRI.so.6: ไม่สามารถเปิดไฟล์วัตถุที่แชร์: "ไม่เช่นนั้น ไฟล์หรือไดเรกทอรี "'และวิธีแก้ปัญหานี้ทำงานโดยการเรียกใช้' imaginagick รุ่น sudo ldconfig / usr / local / lib '7.0.8-56 ได้โดย' ident -version '
pierrely

อาจคุ้มค่าที่จะเพิ่มสิ่งเหล่านี้หากคุณวางแผนที่จะจัดการหรือตัดแต่งไฟล์ PDF 1. pdfshuffler เพื่อแยกหน้าซ้ายและขวา (ของต้นฉบับทั้งสองด้าน) 2. pdftk เชน PDF ใช้ pdftk (เป็นไฟล์ jar) เพื่อแยกไฟล์ในหน้าคู่และคี่แยกต่างหาก: 4 เพื่อตัดหน้า pdfquench - ฉันต้องการ gir1 ด้วย 2-goocanvas-2.0 gir1.2-poppler-0.18 python-pygoocanvas python-poppler python-pypdf2 pdfsandwich ใช้การรักษาลดขนาดไฟล์ลง 10 เท่าเช่นกัน ขอบคุณ อูบุนตู 19.04 ยัง pdfsam การแยกและรวมเรียกเป็นไฟล์ขวด Java หลังจากดาวน์โหลด
pierrely

0

OCRfeederมีข้อบกพร่อง

/usr/lib/python2.7/dist-packages/reportlab/pdfgen/textobject.py

บรรทัด 436 ควรอ่าน:

            lines = asUnicode(stuff).strip().split('\n')
# bug here, was:
#            lines = '\n'.split(asUnicode(stuff).strip())

เปลี่ยนสิ่งนี้และมันได้ผลสำหรับฉัน


0

ระบบปฏิบัติการ: Ubuntu 18.04

ก่อนอื่นให้ติดตั้งtesseract-ocrด้วย:

apt-cache show tesseract-ocr
sudo apt-get update && sudo apt-get upgrade
apt-get install tesseract-ocr --print-uris
apt-get install tesseract-ocr
sudo !!

หากคุณกำลังจะใช้ภาษาอื่นที่ไม่ใช่ภาษาอังกฤษกับ tesseract คุณจะต้องติดตั้งแพ็คเกจ laguage ที่เกี่ยวข้อง เช่นภาษาโปรตุเกสคุณต้องทำ:

sudo apt-get install tesseract-ocr-por

มิฉะนั้นคุณจะได้รับข้อผิดพลาด:

Error opening data file /usr/share/tesseract-ocr/4.00/tessdata/por.traineddata
Please make sure the TESSDATA_PREFIX environment variable is set to your 
"tessdata" directory.
Failed loading language 'por'
Tesseract couldn't load any languages!
Could not initialize tesseract.

หากคุณ Google "Tesseract PDF" คุณอาจจะพบนี้โพสต์ค่อนข้างล้าสมัย อย่างไรก็ตามมันให้คำแนะนำที่เป็นประโยชน์กับคุณ คุณจะต้องแปลง.pdfไฟล์เป็นไฟล์.tiffแรก วิ่ง:

convert -density 125 originalfile.pdf -depth 8 -alpha Off newfile.tiff

หากเช่นในโพสต์ที่ล้าสมัยคุณลืมที่จะเพิ่มalpha -Offคุณจะได้รับข้อผิดพลาดต่อไปนี้:

Tesseract Open Source OCR Engine v4.0.0-beta.1 with Leptonica
Error in pixReadFromTiffStream: spp not in set {1,3,4}

ตอนนี้คุณสามารถรันคำสั่งสุดท้าย ในกรณีที่ PDF ต้นฉบับของคุณเป็นภาษาโปรตุเกสคุณจะต้องใช้คำสั่งนี้:

tesseract -l por newfile.tiff output pdf 

output.pdfไฟล์ที่สร้างขึ้นจะได้รับการตั้งชื่อ ตัวอย่างเช่นหาก PDF ของคุณเป็นภาษาฝรั่งเศสหลังจากที่คุณติดตั้งที่เกี่ยวข้องtesseract-ocr-fraคุณจะเรียกใช้:

tesseract -l fra newfile.tiff output pdf 

output.pdfและไฟล์ที่ต้องการจะเป็นอีกครั้ง


0

ฉันมีปัญหาเดียวกันนี้ดังนั้นฉันจึงเขียนสิ่งนี้ในช่วงสุดสัปดาห์ ลองยิงดูสิ มันใช้งานได้ดี! tesseractมันเป็นห่อหุ้มรอบที่เรียบง่าย ใช้pdftoppmในการแปลง PDF เป็นไฟล์ TIFF จำนวนมากจากนั้นจะใช้tesseractเพื่อดำเนินการ OCR (Optical Character Recognition) กับพวกเขาและสร้าง PDF ที่ค้นหาได้เป็นผลลัพธ์ ไฟล์ชั่วคราวระดับกลางทั้งหมดจะถูกลบโดยอัตโนมัติเมื่อสคริปต์เสร็จสมบูรณ์

รหัสที่มา: https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF

คำแนะนำในการติดตั้งและใช้งานpdf2searchablepdf:

ทดสอบกับ Ubuntu 18.04 ในวันที่ 11 พฤศจิกายน 2019

ติดตั้ง:

git clone https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF.git
./PDF2SearchablePDF/install.sh
sudo apt update
sudo apt install tesseract-ocr

ใช้:

pdf2searchablepdf mypdf.pdf

ตอนนี้คุณจะมีไฟล์ PDF ชื่อmypdf_searchable.pdfซึ่งมีข้อความที่ค้นหาได้!

เสร็จสิ้น เสื้อคลุมไม่มีการอ้างอิงแบบไพ ธ อนเนื่องจากมันถูกเขียนด้วย bash ทั้งหมด

ข้อมูลอ้างอิงหรือแหล่งข้อมูลที่เกี่ยวข้อง:

  1. PDF2SearchablePDF : https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF
  2. วิธีแปลงไฟล์ PDF เป็นข้อความค้นหาแบบ PDF ได้อย่างไร
  3. ระบบ OCR ที่ดีที่สุดและง่ายที่สุดคืออะไร
  4. แยกภาพฝังตัวจาก PDF
  5. pdfsandwich : wrapper ซอฟต์แวร์ทางเลือกฉันเพิ่งค้นพบว่ามันคุ้มค่าที่จะเช็คเอาท์ด้วย! http://www.tobias-elze.de/pdfsandwich/
  6. /unix/301318/how-to-ocr-a-pdf-file-and-get-the-text-stored-within-pdf/551526#551526
  7. [วิธีแปลง PDF เป็นรูปภาพจำนวนมากด้วยpdftoppm] การแยกรูปภาพที่ฝังไว้ออกจาก PDF
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.