พยายามแปลงไฟล์ PDF เป็นข้อความฟรี


16

ฉันใช้ OSX และต้องการที่จะแปลงไฟล์ pdf เป็นข้อความ

ฉันต้องการแอปพลิเคชันฟรีในการทำเช่นนี้เพราะฉันมั่นใจว่าต้องมีบางอย่าง


2
คุณต้องการแยกข้อความจาก PDF ที่มีข้อความอยู่แล้วหรือไม่? (เช่นคุณสามารถคัดลอกและวางชิ้นส่วนออกจากพวกเขา) หรือคุณกำลังมองหาการรับรู้ข้อความที่อยู่ในเนื้อหาของภาพ?
Alan Shutko

ไม่free-ocr.comความช่วยเหลือ?
ทิม

คำตอบ:


14

นี่คือขั้นตอนที่ฉันใช้ในการติดตั้งและใช้ xpdf ผ่าน Homebrew

  1. ติดตั้งการพึ่งพาของ Homebrew:

    xcode-select --install
    
  2. ติดตั้ง Homebrew จากเว็บไซต์ของพวกเขา:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
  3. ทำสิ่งที่บอกให้คุณทำการติดตั้ง Homebrew ให้สมบูรณ์

  4. ตรวจสอบว่า Homebrew มีความสุขและใช้งานได้ดี

    brew doctor
    
  5. ติดตั้ง xpdf ถัดไปและการอ้างอิง:

    brew install Caskroom/cask/xquartz
    
    brew install xpdf
    
  6. ในที่สุดใช้ pdftotext แพคเกจที่มาพร้อมกับชุด xpdf:

    pdftotext Some_Document.pdf Some_Document.txt
    

ชื่อไฟล์แรกเป็น PDF ที่มีอยู่แล้ว ที่สองคือปลายทาง ผลลัพธ์นั้นดีกว่า Adobe Acrobat รุ่นเก่า (ที่ยอมรับได้) แก้ไข: Adobe Acrobat เวอร์ชันใหม่ (2019) แสดงผลลัพธ์ที่ไม่ดีในทำนองเดียวกัน


2
ฉันคิดว่าxquartzไม่จำเป็นสำหรับเครื่องมือคอนโซลxpdfระบบ นอกจากนี้ยังมีpopplerทางแยกxpdfซึ่งดูเหมือนว่าจะมีการบำรุงรักษามากขึ้น: github.com/scraperwiki/scraperwiki-python/issues/ …
Jeroen Wiert Pluimers

6

หลายวิธี

  1. ใช้เอกสารของ Google (คุณจะต้องมีบัญชี Google)

  2. ใช้Automator (จำเป็นต้องใช้งานบางอย่าง)

คุณสามารถใช้ Automator เพื่อสร้างเวิร์กโฟลว์ที่สามารถแยกข้อความจาก PDF และบันทึกเป็นข้อความหรือเอกสาร RTF

แยกข้อความจาก pdf

หรือแอพจาก App Store เช่นPDF เป็น Text


4

xpdf ที่ฉันติดตั้งกับพอร์ต:

port install xpdf

ประกอบด้วย:

xpdf-pdftotext

มันทำสิ่งที่คุณต้องการสำหรับไฟล์ PDF ใด ๆ ที่มาจากไฟล์ข้อความ (และไม่ได้มาจากภาพ):

xpdf-pdftotext PDF_file text_file

1
คำสั่งอย่างน้อยตามที่ติดตั้งโดย HomeBrew เป็นเพียง“ pdftotext”
Flash Sheridan

@FlashSheridan ฉันขอแนะนำให้คุณโพสต์คำตอบที่ครอบคลุม "pdftotext" และวิธีการติดตั้งผ่าน homebrew? ความคิดเห็นอาจถูกลบได้ตลอดเวลา (และจะไม่ปรากฏในการค้นหา)
nohillside

4

Adobe Readerเวอร์ชันปัจจุบัน(11.0.09) มีรายการ "บันทึกเป็นอื่น ๆ " ในเมนูไฟล์

หนึ่งในตัวเลือกที่มีข้อความ

แอพนี้ฟรีและทำงานได้ดีกับไฟล์ข้อความ รูปภาพทั้งหมดในเอกสารใหม่จะหายไปในรูปแบบ. txt


1

ฉันคิดว่าคุณควรจะสามารถคัดลอกและวางข้อความในเอกสารอื่นได้ เพื่อเลือกข้อความทั้งหมด

เปิด PDF ใน "ดูตัวอย่าง" และ

  • เลือก "แก้ไข | เลือกทั้งหมด"
  • เลือก "แก้ไข | คัดลอก"

ไปที่แอปอื่นพูดว่า "แก้ไขข้อความ"

  • เลือก "แก้ไข | วาง"

โปรดทราบว่าหากคุณลองทำสิ่งนี้และไม่มีการวางข้อความเพียงบรรทัดว่างลองพิมพ์ PDF ของคุณเป็น PDF ใหม่ก่อนเช่น

  • ในหน้าตัวอย่างให้เลือก "ไฟล์ | พิมพ์"
  • ที่ด้านล่างขวาเลือก "PDF | บันทึกเป็น PDF"
  • สิ่งนี้จะส่งออก PDF ใหม่

ตอนนี้ลองกระบวนการข้างต้นด้วย PDF ใหม่นี้ ทำงานให้ฉัน!

PS: ถ้าคุณมี Microsoft Word คุณอาจจะสามารถเปิด PDF ของคุณในคำ


1
ขณะนี้ควรทำงานเมื่อเอกสาร PDF มีเนื้อหาข้อความจริงแต่ก็ไม่ได้จัดรูปแบบและในบางกรณีผลิตข้อความขยะพร้อมกับสิ่งที่จะพิจารณาข้อความที่ต้องการ โปรดทราบว่านี่อาจเป็นวิธีเดียวกันกับวิธีอื่น ๆ แต่ฉันรู้สึกว่ามันสำคัญที่จะต้องระบุ
user3439894

ไม่ต้องสงสัยเลย - ไม่สมบูรณ์แบบแน่นอนและฉันเห็นด้วยอย่างยิ่งกับทุกสิ่งที่คุณพูด ฉันเพิ่งเพิ่มที่นี่เป็นตัวเลือกที่ฉันสังเกตเห็นก่อนหน้านี้มันใช้ได้กับฉันโดยไม่ต้องติดตั้งอะไรเลย ;-)
Brad Parks

ฉันยอมรับด้วยว่ามันใช้งานได้ในกรณีส่วนใหญ่ แต่หมายเลขหน้ารายละเอียดส่วนท้ายที่ไม่เกี่ยวข้องกับเอกสารและแย่กว่านั้น: INFINITE SCROLLING บนเอกสารขนาดใหญ่ทำให้นี่เป็นโซลูชันที่ไม่น่าพึงพอใจ ถ้ามันน้อยกว่า 5 หน้าฉันจะพิจารณา แต่ให้ตารางส่วนใหญ่ที่ฉันต้องการมาจาก PDF จากเว็บไซต์การวิจัยที่ปฏิเสธที่จะพ่น excel หรือ SQL ตัวเลือกนี้ไม่สามารถใช้งานได้
Tmanok

ตกลงกัน! ไม่ใช่ตัวเลือกที่ทำงานได้สำหรับกรณีการใช้งานของคุณ
Brad Parks

1

สคริปต์ python ต่อไปนี้จะแสดงข้อความจากเอกสาร PDF ไปยังไฟล์. txt (หมายเหตุ: ไม่มีการรับประกันว่าข้อความจำเป็นต้องอยู่ใน 'ตรรกะ' ที่มนุษย์สามารถอ่านได้เนื่องจากวิธีการเก็บข้อมูลในรูปแบบ PDF)

สคริปต์จะสร้างไฟล์ข้อความสำหรับไฟล์ PDF ใด ๆ ที่ให้มาเป็นอาร์กิวเมนต์ในบรรทัดคำสั่ง (เช่นpdf2txt.py myPDF.pdf) หรือคุณสามารถใช้ในการดำเนินการ "Run Shell Script" ของ Automator การตั้งค่าประเภทเชลล์เป็นไพ ธ อนและส่งผ่านอินพุตเป็น "เป็นอาร์กิวเมนต์" . จากนั้นคุณสามารถใช้มันเป็น Quick Action หรือ 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()

สิ่งนี้ใช้ได้นอกกรอบ (เช่น - ไม่จำเป็นต้องติดตั้งไลบรารีของหลามหรืออะไรก็ได้!) - เป็นเพียงการคัดลอกข้อความดิบ แต่บางครั้งก็เป็นสิ่งที่คุณต้องการ - โปรดทราบว่าไฟล์จะบันทึกในไดเรกทอรีปัจจุบัน (ถ้าเรียกใช้จาก บรรทัดคำสั่ง) และไม่ได้ออกมาที่ stdout
Brad Parks

@BradParks มันควรจะบันทึกไว้ในโฟลเดอร์เดียวกับไฟล์อินพุต: มันจะพาไฟล์จากอาร์กิวเมนต์คำสั่ง คุณเป็นผู้จัดหามันอย่างไร?
benwiggy

อ่า ... ฉันอยู่ในโฟลเดอร์เดียวกันดังนั้นฉันไม่เคยสังเกตว่า - ความตั้งใจจริงของฉันเท่านั้นที่จะบอกว่ามันไม่ได้มาที่ stdout และมันก็ใช้ได้! ขอบคุณ!
Brad Parks

1
แทนที่ทั้งสองสายหลังจากที่คำสั่งด้วยif pdfDoc print(pdfDoc.string())
benwiggy

โอ้ว้าวนี่เป็นเหมือนครั้งแรกที่การแจกแอปเปิลไพ ธ อนกลายเป็นประโยชน์สำหรับบางสิ่งบางอย่าง !! ขอบคุณสำหรับคำตอบ !!
Jérémie
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.