Làm thế nào để biến pdf thành pdf có thể tìm kiếm văn bản?


20

Tôi có một số tài liệu được quét trong pdf và tôi muốn có thể tìm kiếm chúng. Làm thế nào tôi có thể làm điều đó?

Về cơ bản, tôi phải OCR pdf và sau đó trộn văn bản trích xuất lại thành pdf mới. Tôi đã vô tình thử một số giải pháp khác nhau (bao gồm cả những giải pháp được tìm thấy trong Thêm thông tin OCR vào PDF ).

  1. pdfoc (cung cấp cho tôi vấn đề này: https://github.com/gkovacs/pdfoc/issues/7 )
  2. pdfsandwich (trong đó trung tâm phần mềm nói rằng đó là một gói kém và tôi không nên cài đặt nó)
  3. OCRfeeder (trong trung tâm phần mềm) xuất sang odt độc đáo, nhưng không phản ứng khi xuất sang pdf.
  4. Gscan2pdf xuất một hình ảnh toàn màu đen (nhưng có thể tìm kiếm) như được báo cáo trong cuộc thảo luận này .
  5. Tôi không nghĩ rằng trình xem Pdfxchange có thể xử lý việc thực hiện ocr trên các tệp trên 500 trang.

Có một gói phần mềm tôi không biết? Hoặc một kịch bản làm điều này?


3
Tôi đã không thử bản thân mình, nhưng tôi đã thấy dự án này được đề xuất trong quá khứ.
Glutimate

Tôi vừa viết pdf2searchablepdf. Nó dựa vào tesseract. Nó hoạt động tốt. Siêu dễ sử dụng. Xem tại đây. Askubfox.com/a/1187881/327339
Gabriel Staples

Câu trả lời:


12

Ubuntu <16.04

Sau lời nhận xét của Glutanimate tôi đã tìm thấy một giải pháp làm việc. Đó là kịch bản OCRmyPDF .

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

Nếu bạn nhận được một thông báo nói rằng bạn nên cài đặt GNU song song. Nó có thể được thực hiện (theo https://askubfox.com/a/298598/115155 ) với (dòng thứ hai là tùy chọn và tùy thuộc vào hương vị và phiên bản của bạn):

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

Cuối cùng, bạn có thể OCR pdf của mình bằng lệnh:

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

Nếu có vẻ như lệnh không phản hồi, bạn có thể tăng mức độ chi tiết bằng cách sử dụng -vcờ (có thể được sử dụng tăng dần theo -vvhoặc -vvv). Có thể tốt nhất để kiểm tra kết quả đầu tiên trên pdf ngắn hơn. Bạn có thể rút ngắn pdf như sau:

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

Ubuntu> = 16.04

Kể từ Ubuntu 16.04 OCRmyPDF đã có sẵn thông qua apt. Chỉ cần chạy

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

Cuối cùng, bạn có thể OCR pdf của mình bằng lệnh:

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

Nếu có vẻ như lệnh không phản hồi, bạn có thể tăng mức độ chi tiết bằng cách sử dụng -vcờ (có thể được sử dụng tăng dần theo -vvhoặc -vvv). Có thể tốt nhất để kiểm tra kết quả đầu tiên trên pdf ngắn hơn. Bạn có thể rút ngắn pdf như sau:

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

Nếu bạn có bất kỳ câu hỏi nào, hãy xem Github Repo mới .


Bạn có chấp nhận câu trả lời của mình để giải quyết không? (Để nó không nằm trong danh sách chưa được trả lời)
Người dùng đã đăng ký

Chỉ sudo -H pip install git+https://github.com/jbarlow83/OCRmyPDFdành cho Ubuntu 16.04
Martin Thoma

1
Đối với Ubuntu 16.10 trở lên, bạn có thể làm sudo apt install ocrmypdf.
endolith

6

@ don.joey đã trả lời với tập lệnh ocrmypdf . Tuy nhiên, nó có thể được cài đặt trực tiếp ngay bây giờ (từ 16.10 trở đi).

sudo apt install ocrmypdf

Sau đó, bạn phải cài đặt các ngôn ngữ tesseract bạn cần.

Để liệt kê những ngôn ngữ đã có trong hệ thống của bạn, hãy nhập:

tesseract --list-langs

Trong trường hợp bạn bỏ lỡ một, cài đặt nó. Ví dụ,

sudo apt install tesseract-ocr-spa

Bây giờ bạn có thể tạo một tệp PDF có thể tìm kiếm (chất lượng sẽ thay đổi, tùy thuộc vào tài liệu được quét) bằng lệnh sau

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

Tất nhiên, bạn có thể kiểm tra trang man của nó để biết một số tùy chọn bổ sung.


Có upvote của tôi thưa ông!
don.joey

4

pdfsandwichthực hiện chính xác công việc này. Tôi không biết rằng có một gói được cung cấp trong trung tâm phần mềm, nhưng tôi đang cung cấp các gói gỡ lỗi Ubuntu cho trang web của dự án (xem http://www.tobias-elze.de/pdfsandwich/ để biết chi tiết), bao gồm phiên bản mới nhất hiện tại (0.1.2), chưa chắc có ở bất kỳ trung tâm phần mềm nào.

Nếu bạn có một tệp được quét scanned_file.pdf, chỉ cần gọi

pdfsandwich scanned_file.pdf

tạo tệp scanned_file_ocr.pdfvới văn bản được nhận dạng được thêm vào các trang được quét.

So với hầu hết các giải pháp hiện có, nó tự động phát hiện phiên bản tesseract được cài đặt và điều chỉnh hành vi của nó cho phù hợp. Ngoài ra, nó thực hiện quá trình tiền xử lý các hình ảnh được quét trước quá trình OCR, chẳng hạn như khử xiên hoặc loại bỏ các cạnh tối, v.v., có thể cải thiện đáng kể nhận dạng ký tự quang học.

TUYÊN BỐ TỪ CHỐI: Tôi là nhà phát triển pdfsandwichvà do đó rất thiên vị.


Nghe có vẻ hay, nhưng tại sao pdfsandwich phiên bản 0.1.4 được cài đặt bằng apt-get chuyển đổi từng ký tự thành hình chữ nhật màu đen cho tôi trên Ubuntu 16.04?
Valentas

1
Thật khó để trả lời mà không có thêm thông tin chi tiết. Trước hết, tôi khuyên bạn nên sử dụng phiên bản mới hơn của công cụ. Phiên bản hiện tại là 0.1.6. Bạn có thể tìm thấy các gói deb cho Ubuntu trên trang web. Thứ hai, nếu điều đó không có ích, bạn có thể muốn sử dụng tùy chọn -verbose để biết thêm chi tiết và sử dụng các chi tiết này để báo cáo lỗi.
Tobias Elze

một vài vấn đề cho tôi convert: cố gắng thực hiện một thao tác không được cho phép bởi chính sách bảo mật `PDF '@ error / constolarship.c / IsCoderAuthorized / 408. vì vậy tôi đã phải cài đặt fantemagick từ nguồn được tải xuống từ fantemagick.org/script/install-source.php sau đó tôi gặp lỗi 'khi tải các thư viện chia sẻ: libMagickCore-7.Q16HDRI.so.6: không thể mở tệp đối tượng được chia sẻ: "Không như vậy tệp hoặc thư mục "'và giải pháp này hoạt động bằng cách chạy' sudo ldconfig / usr / local / lib 'phiên bản fantemagick là 7.0.8-56 có được bởi' nhận dạng -version '.
vui vẻ

có thể đáng để thêm những tiện ích này nếu bạn có kế hoạch thao túng hoặc cắt tỉa pdf. 1. pdfshuffler để phân chia các trang trái và phải (của bản gốc 2 mặt) 2. chuỗi pdf pdftk Sử dụng pdftk (dưới dạng tệp jar) để tách tệp thành các trang chẵn và lẻ: 4 để cắt trang pdfquench - Tôi cũng cần gir1. 2-goocanvas-2.0 gir1.2-poppler-0.18 python-pygoocanvas python-poppler python-pypdf2. pdfsandwich đã làm việc một điều trị, giảm kích thước tệp xuống 10 lần. cảm ơn. Ubuntu 19.04 cũng pdfsam để phân tách và hợp nhất, chạy dưới dạng tệp jar Java sau khi tải xuống
hoàn toàn là

0

OCRfeeder có lỗi trong

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

dòng 436 nên đọc:

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

đã thay đổi điều này và nó đã làm việc cho tôi


0

HĐH: Ubuntu 18.04

Đầu tiên, cài đặt tesseract-ocrvới:

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 !!

Nếu bạn định sử dụng một ngôn ngữ khác tiếng Anh với tesseract, thì bạn sẽ phải cài đặt gói laguage tương ứng. Ví dụ với tiếng Bồ Đào Nha, bạn sẽ cần phải làm:

sudo apt-get install tesseract-ocr-por

Nếu không, bạn sẽ nhận được lỗi:

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.

Nếu bạn Google "tesseract PDF", bạn có thể sẽ tìm thấy bài đăng hơi lỗi thời này . Tuy nhiên, nó cung cấp cho bạn một số gợi ý hữu ích. Trước tiên bạn sẽ phải chuyển đổi .pdftập tin của bạn thành một .tiff. Chạy:

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

Nếu, như trong bài viết đã lỗi thời, bạn quên thêm alpha -Off, bạn sẽ gặp phải lỗi sau:

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

Bây giờ bạn có thể chạy lệnh cuối cùng. Trong trường hợp cụ thể là bản PDF gốc của bạn bằng tiếng Bồ Đào Nha, bạn sẽ cần lệnh này:

tesseract -l por newfile.tiff output pdf 

Các tập tin được tạo sẽ được đặt tên output.pdf. Ví dụ: nếu PDF của bạn bằng tiếng Pháp, sau khi bạn cài đặt tương ứng tesseract-ocr-fra, bạn sẽ chạy:

tesseract -l fra newfile.tiff output pdf 

Và tập tin mong muốn sẽ là, một lần nữa, output.pdf .


0

Tôi đã có cùng một vấn đề vì vậy tôi đã viết nó vào cuối tuần. Cho nó một phát súng; nó hoạt động rất tốt Nó là một gói đơn giản xung quanhtesseract . Nó sử dụng pdftoppmđể chuyển đổi một tệp PDF thành một loạt các tệp TIFF, sau đó nó sử dụng tesseractđể thực hiện OCR (Nhận dạng ký tự quang học) trên chúng và tạo ra một tệp PDF có thể tìm kiếm làm đầu ra. Tất cả các tệp tạm thời trung gian sẽ tự động bị xóa khi tập lệnh hoàn tất.

Mã nguồn: https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF

Hướng dẫn cài đặt và sử dụng pdf2searchablepdf :

Đã thử nghiệm trên Ubuntu 18.04 vào ngày 11 tháng 11 năm 2019.

Tải về:

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

Sử dụng:

pdf2searchablepdf mypdf.pdf

Bây giờ bạn sẽ có một pdf gọi là mypdf_searchable.pdf , chứa văn bản có thể tìm kiếm!

Làm xong. Trình bao bọc không có phụ thuộc python, vì hiện tại nó được viết hoàn toàn bằng bash.

Tài liệu tham khảo hoặc tài nguyên liên quan:

  1. PDF2SearchablePDF : https://github.com/ElectricRCAircraftGuy/PDF2SearchablePDF
  2. Làm thế nào để biến pdf thành pdf có thể tìm kiếm văn bản?
  3. Giải pháp OCR tốt nhất, đơn giản nhất là gì?
  4. Trích xuất hình ảnh nhúng từ PDF
  5. pdfsandwich : Trình bao bọc phần mềm thay thế tôi mới phát hiện ra, đó cũng là giá trị kiểm tra! http://www.tobias-elze.de/pdfsandwich/
  6. /unix/301318/how-to-oc-a-pdf-file-and-get-the-text-stored-within-pdf/551526#551526
  7. [cách biến PDF thành một bó hình ảnh với pdftoppm] Trích xuất hình ảnh nhúng từ PDF
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.