PDF'yi metne ücretsiz dönüştürmeye çalışıyorum


16

OSX kullanıyorum ve pdf dosyalarını metne dönüştürmek istiyorum.

Bunu yapmak için ücretsiz bir uygulama istiyorum, eminim bazı olması gerekir.


2
Zaten metin içeren PDF'lerden metin çıkarmak mı istiyorsunuz? (örneğin, parçaları kopyalayıp yapıştırabilirsiniz) Yoksa resim içeriğindeki metni tanımak mı istiyorsunuz?
Alan Shutko

Does free-ocr.com yardım?
Tim

Yanıtlar:


14

İşte Homebrew üzerinden xpdf kurmak ve kullanmak için kullandığım adımlar.

  1. Homebrew'ın bağımlılıklarını yükleyin:

    xcode-select --install
    
  2. Homebrew'u web sitelerinden yükleyin:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
  3. Homebrew kurulumunu tamamlamanýzý söyleyin.

  4. Homebrew'un mutlu ve teknik özelliklere göre çalıştığını doğrulayın.

    brew doctor
    
  5. Sonraki xpdf ve bağımlılıklarını yükleyin:

    brew install Caskroom/cask/xquartz
    
    brew install xpdf
    
  6. Son olarak, xpdf paketi ile birlikte gelen pdftotext'i kullanın:

    pdftotext Some_Document.pdf Some_Document.txt
    

İlk dosya adı mevcut bir PDF'dir; ikincisi varış noktasıdır. Sonuçlar, Adobe Acrobat'ın (kuşkusuz eski) bir sürümüne göre çok daha iyiydi. Düzenleme: Adobe Acrobat'ın yeni (2019) sürümleri de benzer şekilde kötü sonuçlar göstermiştir.


2
Sanırım içindeki xquartzkonsol araçları için gerekli değil xpdf. Dahası, popplerçatalı xpdfçok daha aktif bir şekilde korunuyor gibi görünüyor: github.com/scraperwiki/scraperwiki-python/issues/…
Jeroen Wiert Pluimers

6

Çoklu yöntemler.

  1. Google dokümanlarını kullanın (bir Google hesabına ihtiyacınız olacak)

  2. Automator kullanın (bazı işler gerekir)

PDF'lerden metin ayıklayıp bir metin veya RTF belgesi olarak kaydedebilen bir iş akışı oluşturmak için Automator'u kullanabilirsiniz.

pdf'den metin çıkar

veya App Store'dan bir uygulama, örneğin PDF'den Metne


5

xpdf hangi bağlantı noktaları ile yükledim:

port install xpdf

içerir:

xpdf-pdftotext

Bir metin dosyasından gelen (bir görüntüden değil) herhangi bir PDF dosyası için istediğinizi yapar:

xpdf-pdftotext PDF_file text_file

1
En azından HomeBrew tarafından yüklendiği gibi komut sadece “pdftotext” dir.
Flash Sheridan

@FlashSheridan "pdftotext" i ve bunu homebrew üzerinden nasıl kuracağınızı içeren bir cevap göndermenizi tavsiye edebilir miyim? Yorumlar her zaman silinebilir (ve ayrıca aramalarda görünmez).
nohillside

4

Adobe Reader'ın mevcut sürümünde (11.0.09), Dosya Menüsünde "Diğer Olarak Kaydet" öğesi vardır.

Seçeneklerden biri Metin .

Uygulama ücretsizdir ve metin dosyalarını çıktılamak iyi bir iş yapar. Yeni belgedeki tüm resimler .txt biçiminde kaybolacaktır.


1

Metni kopyalayıp başka bir belgeye yapıştırabilmeniz gerektiğini düşünüyorum. Tüm metni seçmek için

PDF'yi "Önizleme" de açın ve

  • "Düzenle | Tümünü Seç" i seçin
  • "Düzenle | Kopyala" yı seçin

Başka bir uygulamaya gidin, "Metin Düzenleme" deyin

  • "Düzenle | Yapıştır" ı seçin

Bunu denemeye çalışırsanız ve yapıştırılmış metin yoksa, yalnızca bir sürü boş satır varsa, önce PDF'nizi yeni bir PDF'ye yazdırmayı deneyin;

  • Önizleme'de "Dosya | Yazdır" ı seçin
  • Sağ altta "PDF | PDF Olarak Kaydet" i seçin
  • Bu yeni bir PDF'yi dışa aktarır.

Şimdi bu yeni PDF ile yukarıdaki işlemi deneyin. Benim için çalıştı!

Not: Microsoft Word'ünüz varsa PDF'nizi kelime ile açabilirsiniz


1
Bu, PDF belgesi aslında metin içeriği içerdiğinde çalışmalıdır , ancak biçimlendirmeyi korumaz ve bazı durumlarda istenen metin olarak kabul edilecek şeyle birlikte çöp metni üretir. Bunun diğer yöntemlerle de aynı olabileceğini unutmayın, ancak belirtmek önemli.
user3439894

şüphesiz - kesin olarak mükemmel değil ve söylediğin her şeye tamamen katılıyorum. Ben sadece buraya daha önce fark ettiğim bir seçenek olarak ekliyorum, hiçbir şey yüklemeden benim için çalıştı ;-)
Brad Parks

Ayrıca çoğu durumda işe yaradığını kabul ediyorum, ancak sayfa numaraları, belge ile ilgili olmayan ve daha da kötüsü altbilgi ayrıntıları: Büyük belgelerde SONSUZ KAYDIRMA bunu tatmin edici olmayan bir çözüm haline getiriyor. 5 sayfadan daha az olsaydı, düşünürdüm, ancak ihtiyacım olan çoğu tablo, excel veya SQL tükürmeyi reddeden araştırma sitelerinden PDF'lerden geliyor, bu seçenek bile işlevsel değil.
Tmanok

Kabul! durumunuz için uygun bir seçenek değil
Brad Parks

1

Aşağıdaki python betiği, metni bir PDF belgesinden bir .txt dosyasına gönderecektir. (Not: Verilerin PDF biçiminde tutulma biçimi nedeniyle metnin zorunlu olarak 'mantıklı' insan tarafından okunabilir sırada olduğuna dair bir garanti yoktur.)

Komut dosyası, komut satırında kendisine bağımsız değişken olarak sağlanan PDF dosyaları için metin dosyaları oluşturur (örneğin pdf2txt.py myPDF.pdf), Kabuk türünü python ve Pass girdisini "Bağımsız değişkenler" olarak ayarlayarak Automator'ın "Kabuk Komut Dosyasını Çalıştır" eyleminde kullanabilirsiniz. . Sonra Hızlı Eylem veya DropApp olarak kullanabilirsiniz.

#!/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()

Bu kutudan çıkar (yani - herhangi bir python kütüphanesi veya herhangi bir şey yüklemek zorunda kalmadı!) - Sadece metnin ham bir dökümüdür, ancak bazen ihtiyacınız olan şeydir - dosyanın geçerli dizine kaydettiğini unutmayın ( komut satırı) ve stdout'a gelmiyor
Brad Parks

@BradParks Girdi dosyasıyla aynı klasöre kaydedilmelidir: dosyayolunu komut bağımsız değişkenlerinden alır. Nasıl tedarik ediyorsunuz?
benwiggy

ahh ... aynı klasördeydim, bu yüzden hiç fark etmedim - tek gerçek amacım stdout'a gelmediğini ve işe yaradığını söylemekti! Teşekkürler!
Brad Parks

1
İfadeden sonraki iki satırı if pdfDocile değiştirin print(pdfDoc.string()).
benwiggy

Oh vay be, bu tam anlamıyla Apple Python dağıtımının bir şey için yararlı olduğu ilk kez! Yanıt için teşekkürler !!
Jérémie
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.