Đang cố gắng chuyển đổi pdf thành văn bản miễn phí


16

Tôi đang sử dụng OSX và muốn có thể chuyển đổi tập tin pdf thành văn bản.

Tôi muốn một ứng dụng miễn phí để làm điều này, vì tôi chắc chắn phải có một số.


2
Bạn đang tìm cách trích xuất văn bản từ các tệp PDF đã chứa văn bản? (nghĩa là bạn có thể sao chép và dán các phần trong số chúng) Hoặc bạn đang muốn nhận ra văn bản có trong nội dung hình ảnh?
Alan Shutko

Liệu free-ocr.com giúp đỡ?
Tim

Câu trả lời:


13

Dưới đây là các bước tôi đã sử dụng để cài đặt và sử dụng xpdf qua Homebrew.

  1. Cài đặt các phụ thuộc của Homebrew:

    xcode-select --install
    
  2. Cài đặt Homebrew từ trang web của họ:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
  3. Làm những gì nó nói với bạn để hoàn thành cài đặt Homebrew.

  4. Xác minh rằng Homebrew là hạnh phúc và hoạt động để spec.

    brew doctor
    
  5. Tiếp theo cài đặt xpdf và các phụ thuộc của nó:

    brew install Caskroom/cask/xquartz
    
    brew install xpdf
    
  6. Cuối cùng, sử dụng pdftotext, một gói đi kèm với bộ xpdf:

    pdftotext Some_Document.pdf Some_Document.txt
    

Tên tệp đầu tiên là một tệp PDF hiện có; thứ hai là đích đến. Kết quả tốt hơn nhiều so với phiên bản Adobe Acrobat (đã thừa nhận cũ). Chỉnh sửa: Các phiên bản mới (2019) của Adobe Acrobat đã cho thấy kết quả kém tương tự.


2
Tôi nghĩ rằng xquartzkhông cần thiết cho các công cụ giao diện điều khiển trong xpdf. Hơn nữa, có một popplerngã ba xpdfdường như được duy trì tích cực hơn nhiều: github.com/scraperwiki/scraperwiki-python/issues/
mẹo

6

Nhiều phương pháp.

  1. Sử dụng tài liệu Google (bạn sẽ cần một tài khoản Google)

  2. Sử dụng Automator (một số công việc cần thiết)

Bạn có thể sử dụng Automator để tạo một quy trình công việc có thể trích xuất văn bản từ các tệp PDF và lưu nó dưới dạng văn bản hoặc tài liệu RTF.

trích xuất văn bản từ pdf

hoặc một ứng dụng từ App Store, ví dụ PDF sang Text


4

xpdf mà tôi đã cài đặt với các cổng:

port install xpdf

chứa đựng:

xpdf-pdftotext

Nó thực hiện những gì bạn muốn cho bất kỳ tệp PDF nào đến từ tệp văn bản (chứ không phải từ hình ảnh):

xpdf-pdftotext PDF_file text_file

1
Lệnh, ít nhất là được cài đặt bởi HomeBrew, chỉ là kiểu pdftotext.
Flash Sheridan

@FlashSheridan Tôi có thể khuyến khích bạn đăng câu trả lời bao gồm "pdftotext" và cách cài đặt nó qua homebrew không? Nhận xét có thể bị xóa bất cứ lúc nào (và cũng không hiển thị trong các tìm kiếm).
nohillside

4

Phiên bản hiện tại của Adobe Reader (11.0.09) có mục "Lưu dưới dạng khác" trong Menu Tệp.

Một trong những lựa chọn là Văn bản .

Ứng dụng này miễn phí và thực hiện công việc tốt khi xuất các tệp văn bản. Tất cả hình ảnh trong tài liệu mới sẽ bị mất với định dạng .txt.


1

Tôi nghĩ bạn sẽ có thể sao chép và dán văn bản vào tài liệu khác. Để chọn tất cả các văn bản

Mở tệp PDF trong "Xem trước" và

  • chọn "Chỉnh sửa | Chọn tất cả"
  • chọn "Chỉnh sửa | Sao chép"

Chuyển đến một ứng dụng khác, nói "Chỉnh sửa văn bản"

  • chọn "Chỉnh sửa | Dán"

Lưu ý rằng nếu bạn thử và thực hiện điều này và không có văn bản nào được dán, chỉ là một loạt các dòng trống, hãy thử in PDF của bạn sang PDF mới trước, ví dụ:

  • Trong phần Xem trước, chọn "Tệp | In"
  • Ở dưới cùng bên phải, chọn "PDF | Lưu dưới dạng PDF"
  • Điều này xuất một bản PDF mới.

Bây giờ hãy thử quá trình trên với bản PDF mới này. Đã làm cho tôi!

PS: Nếu bạn có Microsoft Word, bạn có thể mở tệp PDF của mình bằng chữ


1
Mặc dù điều này sẽ hoạt động khi tài liệu PDF thực sự chứa nội dung văn bản , nó không duy trì định dạng và trong một số trường hợp tạo ra văn bản rác cùng với những gì sẽ được coi là văn bản mong muốn. Lưu ý rằng điều này cũng có thể giống với các phương pháp khác, nhưng tôi cảm thấy nó rất quan trọng để chỉ ra.
dùng3439894

không nghi ngờ gì - không hoàn hảo chắc chắn, và tôi hoàn toàn đồng ý với mọi điều bạn đã nói. Tôi chỉ thêm nó ở đây như một tùy chọn mà tôi đã nhận thấy trước đây, nó hoạt động với tôi mà không cần cài đặt gì cả ;-)
Brad

Tôi cũng đồng ý rằng nó hoạt động trong hầu hết các trường hợp, nhưng số trang, chi tiết chân trang không liên quan đến tài liệu và tệ hơn nữa: INFINITE SCROLLING trên các tài liệu lớn làm cho điều này trở thành một giải pháp không thỏa đáng. Nếu nó ít hơn 5 trang tôi sẽ xem xét, nhưng với hầu hết các bảng tôi cần là từ các trang PDF ngoài các trang nghiên cứu từ chối nhổ excel hoặc SQL, tùy chọn này thậm chí không hoạt động.
Tmanok

Đã đồng ý! không phải là một lựa chọn khả thi cho trường hợp sử dụng của bạn
Brad

1

Tập lệnh python sau đây sẽ xuất văn bản từ tài liệu PDF sang tệp .txt. (Lưu ý: Không có gì đảm bảo rằng văn bản nhất thiết phải theo thứ tự có thể đọc được của con người, do cách dữ liệu được giữ ở định dạng PDF.)

Tập lệnh sẽ tạo các tệp văn bản cho bất kỳ tệp PDF nào được cung cấp dưới dạng đối số trên dòng lệnh (ví dụ pdf2txt.py myPDF.pdf) hoặc bạn có thể sử dụng trong hành động "Run Shell Script" của Automator, đặt loại shell thành python và chuyển đầu vào thành "As argument" . Sau đó, bạn có thể sử dụng nó như một hành động nhanh hoặc DropApp.

#!/usr/bin/python
# coding: utf-8

import os, sys
from Quartz import PDFDocument
from CoreFoundation import (NSURL, NSString)
NSUTF8StringEncoding = 4

def pdf2txt():
    for filename in sys.argv[1:]:   
        inputfile =filename.decode('utf-8')
        shortName = os.path.splitext(filename)[0]
        outputfile = shortName+" text.txt"
        pdfURL = NSURL.fileURLWithPath_(inputfile)
        pdfDoc = PDFDocument.alloc().initWithURL_(pdfURL)
        if pdfDoc :
            pdfString = NSString.stringWithString_(pdfDoc.string())
            pdfString.writeToFile_atomically_encoding_error_(outputfile, True, NSUTF8StringEncoding, None)

if __name__ == "__main__":
   pdf2txt()

Điều này hoạt động tốt (nghĩa là - không phải cài đặt bất kỳ thư viện python hay bất cứ thứ gì!) - Chỉ là một bãi chứa văn bản thô, nhưng đôi khi đó là những gì bạn cần - lưu ý rằng tệp lưu trong thư mục hiện tại (nếu chạy từ dòng lệnh) và không đi ra thiết bị xuất chuẩn
Brad park

@BradParks Nó nên lưu vào cùng thư mục với tệp đầu vào: nó lấy filepath từ các đối số lệnh. Làm thế nào bạn cung cấp nó?
benwiggy

à ... tôi đã ở trong cùng một thư mục, vì vậy tôi không bao giờ nhận thấy điều đó - ý định thực sự duy nhất của tôi là nói rằng nó không đến với thiết bị xuất chuẩn, và nó hoạt động! cảm ơn!
Brad park

1
Thay thế hai dòng sau if pdfDoctuyên bố với print(pdfDoc.string()).
benwiggy

Ôi chà, đây giống như lần đầu tiên phân phối Apple Python hóa ra lại hữu ích cho việc gì đó !! Cảm ơn vì sự trả lời!!
Jérémie
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.