เป็นวิธีแก้ปัญหาโดยตรงบน PDF (ไม่มีการแยกรูปภาพด้วยตนเอง):
โดยใช้ ocrmypdf
เพื่อกู้คืน OCR (ตามที่กล่าวไว้ในตอนท้ายของไฟล์ เสริม ส่วนหนึ่งของคำตอบนี้) ฉันสังเกตเห็นว่า ocrmypdf -h
แสดงตัวเลือกที่ฟังดูเหมือนสิ่งที่ถามทุกประการ:
--remove-background พยายามลบพื้นหลังออกจากหน้าสีเทาหรือหน้าสี โดยตั้งค่าเป็นสีขาว
ไฟล์ PDF เริ่มต้นมี OCR อยู่แล้ว ซึ่งทำให้เกิดข้อผิดพลาด เว้นแต่จะใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้:
-f, --force-ocr แรสเตอร์ข้อความหรือวัตถุเวกเตอร์ใดๆ ในแต่ละหน้า ใช้ OCR และบันทึกเอาต์พุตแรสเตอร์ (สิ่งนี้เขียน PDF ใหม่)
หรือ
-s, --skip-text ข้าม OCR ในหน้าใดๆ ที่มีข้อความอยู่แล้ว แต่รวมหน้านั้นไว้ในผลลัพธ์สุดท้าย มีประโยชน์สำหรับ PDF ที่มีรูปภาพ หน้าข้อความ และ/หรือหน้า OCRed ก่อนหน้านี้ผสมกัน
การใช้แต่ละไฟล์แยกจากกันกับไฟล์ขนาดใหญ่ไฟล์หนึ่งของฉันซึ่งมีหน้าเว็บหลายร้อยหน้าที่ OCR หยุดทำงานไปแล้ว
ทางออกที่ดีที่สุด ดูเหมือนว่าฉันจะเป็นอันดับแรก พิมพ์เป็น pdf ไฟล์เริ่มต้น (ซึ่งลบ OCR) แล้วทำ
ocrmypdf input.pdf output.pdf -l <LANG> --remove-background -v
สำหรับภาษาอังกฤษ, the -l
ตัวเลือกไม่จำเป็น -v
มีไว้สำหรับรายละเอียดอย่างละเอียดในเทอร์มินัล
ไฟล์ PDF ที่ได้มีขนาดใหญ่กว่าอินพุต (เนื่องจากไฟล์ --ลบพื้นหลัง
ตัวเลือก): ลดขนาดตามที่กล่าวไว้ด้านล่าง
เกี่ยวกับ Scan Tailor เป็นส่วนเสริมของ คำตอบหลัก
แม้แต่ไอคอนก็แสดงให้เห็นถึงความจริงที่ว่ามีไว้สำหรับสิ่งที่ถามที่นี่:
นี่คือวิธีใช้ Scan Tailor กับ pdf:
- แยกหน้า pdf ทั้งหมดเป็นไฟล์รูปภาพ - เนื่องจากเครื่องมือนี้ไม่ได้ประมวลผล pdf โดยตรงและต้องการรูปภาพ Master PDF Editor สามารถทำได้ แต่ในเครื่องของฉันมันหยุดทำงานหลังจากแยกรูปภาพประมาณ 80 รูป แต่ก็ยังสามารถใช้งานได้โดยตั้งค่ากลุ่ม/ช่วงของหน้าใหม่ที่จะแยกออกมา (PDF Mod ขัดข้องก่อนการประมวลผลใดๆ) สิ่งที่ฉันชอบหลังจากการทดลองใช้สองสามครั้งคือ CLI ที่เชื่อถือได้แม้ว่าจะเป็นวิธีที่ช้ากว่า โดยมีคำสั่งเช่น:
pdftoppm MY_PDF.pdf NAME -tiff.pdf
- อย่างที่บอก ที่นี่. â สามารถใช้ตัวแปรอื่นแทนได้ ทิฟ
(ซึ่งจะช่วยให้ ทิฟ
ไฟล์) ตัวอย่างเช่น png
หรือ JPEG
. ดูชุดการทำงานของเมนูบริการ Dolphin สำหรับตัวเลือกการสกัดต่างๆ ที่นี่:
[รายการเดสก์ท็อป]
ประเภท=บริการ
ServiceTypes=KonqPopupMenu/Plugin
MimeType=ใบสมัคร/pdf;
Actions=pdf;tif;jpeg;
X-KDE-Submenu=การทำงานของ PDF: แยกหน้าทั้งหมด
ไอคอน = ใบสมัคร-pdf
[การดำเนินการเดสก์ท็อป pdf]
Name=แยกหน้าเป็น pdf
ไอคอน = ใบสมัคร-pdf
Exec=bash -c 'pdf=$(pdftk "%u" ระเบิด); kdialog --title "แยกหน้า" --msgbox "แยกแล้ว! $pdf";';
[เดสก์ท็อปการดำเนินการ tif]
Name=แยกหน้าเป็น tif
ไอคอน = ใบสมัคร-pdf
Exec=ทุบตี -c 'f="%u"; pdf=$(pdftoppm "$f" "${f%%.*}" -tiff); kdialog --title "แยกหน้า" --msgbox "แยกแล้ว! $pdf";';
[เดสก์ท็อปการกระทำ jpeg]
Name=แยกหน้าเป็น jpeg
ไอคอน = ใบสมัคร-pdf
Exec=ทุบตี -c 'f="%u"; pdf=$(pdftoppm "$f" "${f%%.*}" -jpeg); kdialog --title "แยกหน้า" --msgbox "แยกแล้ว! $pdf";';
- โหลดและประมวลผลภาพผลลัพธ์ใน Scan Tailor. ใส่ไฟล์ภาพที่ได้ลงในโฟลเดอร์แยกต่างหาก และเพิ่มโฟลเดอร์นั้นภายใต้ New Project>Input Directory ใน Scan Tailor (ฉันติดตั้งโปรแกรมนั้นแล้ว จาก ส.ป.กดังที่กล่าวไว้ในความคิดเห็นโดย @ N0rbert ใต้คำตอบหลัก) บางหน้าที่มีรูปภาพจริงและไม่ใช่ข้อความอาจดูดีกว่าถ้า สำหรับแต่ละคน ถูกเลือกเป็น "โทนสีเทาและสี" แทนที่จะเป็นค่าเริ่มต้น "ขาวดำ" (หมายถึงข้อความที่นี่) รันทีละขั้นตอนตามรายการ ตรวจสอบหน้าก่อนที่จะรันหน้าสุดท้าย ("เอาต์พุต")
- สร้างไฟล์ PDF ใหม่จากภาพที่ได้. (ตรวจสอบผลลัพธ์ก่อน
ทิฟ
ไฟล์ได้ตามที่คุณต้องการ) มีหลายวิธีในการสร้าง pdf ใหม่ เป็นอีกครั้งที่เครื่องมือ GUI ที่ฉันได้ลองใช้งานล้มเหลวในไม่ช้าหรือให้ผลลัพธ์ที่แปลกประหลาด ดังนั้นฉันจึงเลือกที่จะใส่ผลลัพธ์ลงไป ทิฟ
ไฟล์ในโฟลเดอร์แยกต่างหากและรันคำสั่งที่นั่น img2pdf *.tif -o out.pdf
- อย่างที่บอก ที่นี่. (อาจต้องตั้งชื่อ/กำหนดหมายเลขไฟล์ให้ถูกต้อง ข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ ที่นี่.)
ไฟล์ PDF ที่ "ปรับแต่งแล้ว" ที่ได้จะมีขนาดเล็กกว่าไฟล์ PDF เริ่มต้น แต่เปอร์เซ็นต์ของการลดขนาดจะแตกต่างกันไปขึ้นอยู่กับปัจจัยต่างๆ ที่ฉันเพิกเฉย (แต่ฉันคิดว่าหน้าที่อยู่ในไฟล์ PDF เริ่มต้นควรแยกออก â ในขั้นตอนที่ 1 â ในรูปแบบที่พวกเขามีอยู่แล้ว ฉันคิดว่า JPEG
และ ทิฟ
ควรใช้แทน png
; ใช้ pdfimages - รายชื่อของคุณ.pdf
ในเทอร์มินัลเพื่อดูรายละเอียดรูปแบบ dpi และรายละเอียดอื่นๆ ก่อนประมวลผลด้วยคำสั่งด้านบนและด้านล่าง)
ไฟล์ PDF สุดท้ายสามารถลดลงได้อีกโดยใช้คำสั่งเช่น:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
รายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนั้น ที่นี่.
นี่คือชุดของการดำเนินการเมนูบริการ Dolphin ตามลิงค์ด้านบน:
[รายการเดสก์ท็อป]
ประเภท=บริการ
ServiceTypes=KonqPopupMenu/Plugin
MimeType=ใบสมัคร/pdf;
การกระทำ = หด; หด0; หด1; หด2;
X-KDE-Submenu=การทำงานของ PDF: ย่อ
ไอคอน = ใบสมัคร-pdf
[เดสก์ท็อปแอ็คชันย่อขนาด]
Name=ลดขนาด PDF เป็น "เครื่องพิมพ์" ขนาด 300dpi
ไอคอน = ใบสมัคร-pdf
Exec=ทุบตี -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -sOutputFile="${f%.pdf}_printer.pdf" "$f"); kdialog --title "Shrink" --msgbox "Done! $pdf";';
[เดสก์ท็อปแอ็คชันหดตัว 0]
Name=ย่อไฟล์ PDF เป็น "เตรียมพิมพ์" ขนาด 300dpi
ไอคอน = ใบสมัคร-pdf
Exec=ทุบตี -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile="${f%.pdf}_prepress.pdf" "$f"); kdialog --title "Shrink" --msgbox "Done! $pdf";';
[เดสก์ท็อปแอ็คชันย่อขนาด 1]
Name=ย่อไฟล์ PDF เป็น "ขนาด ebook, 150dpi
ไอคอน = ใบสมัคร-pdf
Exec=ทุบตี -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOutputFile="${f%.pdf}_small.pdf" "$f"); kdialog --title "Shrink" --msgbox "Done! $pdf";';
[เดสก์ท็อปแอ็คชันหดตัว 2]
Name=ย่อไฟล์ PDF เป็น "หน้าจอ" ขนาด 72dpi
ไอคอน = ใบสมัคร-pdf
Exec=ทุบตี -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/screen -sOutputFile="${f%.pdf}_smaller.pdf" "$f"); kdialog --title "Shrink" --msgbox "Done! $pdf";';
ฉันได้รับความช่วยเหลือจาก นี้ ตอบด้วยนะครับ
OCR (ความสามารถในการค้นหาและคัดลอกข้อความ) จะหายไป ระหว่างขั้นตอนข้างต้น หากมีอยู่ใน pdf เริ่มต้น ในการรับ OCR ให้ใช้
ocrmypdf อินพุต.pdf เอาต์พุต.pdf
สำหรับภาษาอังกฤษอย่างที่กล่าว ที่นี่. สำหรับภาษาอื่นๆ ให้ค้นหาด้วย apt-cache ค้นหา tesseract-ocr
และติดตั้ง เพิ่ม -l <LANG>
ในตอนท้ายของคำสั่งสำหรับภาษาเฉพาะ มากกว่า ที่นี่; ดูชื่อของพวกเขาด้วย ที่นี่.
นี่คือการดำเนินการเมนูบริการ Dolphin สำหรับ OCR ของโรมาเนียที่มีสองตัวเลือก (อันหนึ่งที่มีความคืบหน้าในเทอร์มินัลและชื่อเอาต์พุตคงที่ ส่วนอีกอันมีกระบวนการพื้นหลัง แต่มีชื่อเอาต์พุตตามอินพุต ฉันต้องการให้ทั้งสองกระบวนการในเทอร์มินัลและชื่อเอาต์พุตตาม ในอินพุต แต่ไม่รู้วิธี ถ้าใครทำได้โปรดโพสต์ที่นี่!) สำหรับภาษาอังกฤษ ให้แทนที่ "โรมาเนีย" และลบ -l รอน
ตัวแปร:
[รายการเดสก์ท็อป]
ประเภท=บริการ
ServiceTypes=KonqPopupMenu/Plugin
MimeType=ใบสมัคร/pdf;
การดำเนินการ=ocr1;ocr2;
X-KDE-Submenu=การทำงานของ PDF: ใช้ OCR
ไอคอน = ใบสมัคร-pdf
[การกระทำของเดสก์ท็อป ocr1]
Name=Apply OCR Romanian (ดูความคืบหน้าในเทอร์มินัล; ชื่อเอาต์พุต: ocr_ro.pdf!)
ไอคอน = ใบสมัคร-pdf
Exec=konsole --noclose -e ocrmypdf "%u" ocr_ro.pdf -l รอน
[การกระทำของเดสก์ท็อป ocr2]
Name=Apply OCR Romanian (กระบวนการเบื้องหลัง: NO terminal! input>output name)
ไอคอน = ใบสมัคร-pdf
Exec=ทุบตี -c 'f="%u"; ocrmypdf "$f" "${f%.pdf}_ocr.pdf" -l รอน;'
(การแยกและประมวลผลรูปภาพ รวมถึง 'การพิมพ์เป็น pdf' จะลบ OCR แต่ลดขนาดด้วย ghostscript ตามด้านบน ไม่ดังนั้นจึงสามารถใช้ "การหดตัว" ก่อนหรือหลัง OCR ได้)