Hur man parser PDF i Python: En kraftfull steg-för-steg-guide

Parsing a PDF betyder att extrahera strukturerad eller ostrukturerad data från en PDF-fil. Det kan vara utmanande på grund av den komplexa strukturen hos PDF-filer. Till skillnad från vanlig text eller strukturerade format som JSON och XML lagrar PDF-filer innehåll på ett sätt som inte alltid följer en linjär ordning. Att extrahera text, tabeller, bilder och metadata kräver ett pålitligt, noggrant och effektivt Python PDF-parserbibliotek. I den här artikeln kommer vi att lära oss hur man parsar PDF i Python med Aspose.PDF för Python. I slutet av denna guide kommer du att kunna extrahera text, tabeller och bilder från PDF-dokument i Python.

Denna artikel täcker följande ämnen:

Aspose.PDF: Bästa Python PDF Parser Bibliotek

Aspose.PDF for Python är ett av de bästa Python PDF-parserbiblioteken som finns tillgängliga idag. Det erbjuder hög noggrannhet, stöder strukturerad datautvinning och fungerar till och med med skannade PDF:er genom OCR-stöd.

Aspose.PDF står ut bland Python PDF-parserbibliotek av flera skäl:

  • Hög noggrannhet: Extraherar text och tabeller med precision.
  • Stöd för strukturerade data: Fungerar med tabeller, bilder och metadata.
  • Ingen externa beroenden: Ett lättviktigt, fristående bibliotek.
  • Flertalet utdataformat: Konvertera PDF-filer till text, XLSX, DOCX, HTML och bildformat.
  • Säkerhet och Pålitlighet: Hanterar komplexa PDF-strukturer utan datakorruption.

Ännu mer robust och, Aspose.PDF erbjuder en mer robust och funktionsrik lösning, vilket gör den idealisk för företagsapplikationer och dokumentautomationssystem.

Installation och installation

Att installera Aspose.PDF för Python är enkelt. Ladda ner det från releases eller kör följande pip kommando:

pip install aspose-pdf

För att börja använda Aspose.PDF i din Python-applikation, importera den nödvändiga modulen:

import aspose.pdf as ap

Extrahera text: Pars PDF i Python

Parsing text from a PDF är en av nyckelfunktionerna i Python PDF-parsarbibliotek. Vi kan extrahera text från alla sidor av ett PDF-dokument eller från en specifik sida eller ett område i ett PDF-dokument. I de kommande avsnitten kommer vi att lära oss hur man:

Parsera text från alla sidor av en PDF i Python

Aspose.PDF för Python erbjuder ett effektivt sätt att extrahera text från PDF-dokument med hjälp av klasserna Document och TextAbsorber. Klassen Document används för att ladda PDF-filen, medan klassen TextAbsorber är ansvarig för att extrahera textinnehåll från alla sidor. Metoden accept() bearbetar varje sida och extraherar texten, som sedan kan lagras eller visas efter behov.

Steg för att extrahera text från alla sidor av en PDF i Python

  1. Ladda PDF-dokumentet med Document-klassen.
  2. Skapa en instans av TextAbsorber-klassen för att hantera textextraktion.
  3. Anropa metoden accept()pages-kollektionen, vilket tillåter TextAbsorber att bearbeta alla sidor.
  4. Hämta den extraherade texten med hjälp av text-egenskapen hos TextAbsorber-instansen.
  5. Print the extracted text.

Följande kodexempel visar hur man analyserar text från alla sidor av en PDF i Python.

# Detta kodexempel visar hur man extraherar text från alla sidor i ett PDF-dokument i Python
import aspose.pdf as ap

# Öppna PDF-dokument
document = ap.Document("AddText.pdf")

# Create text absorber
text_absorber = ap.text.TextAbsorber()

# Anropa accept-metoden för att bearbeta alla sidor
document.pages.accept(text_absorber)

# Retrieve the extracted text
extracted_text = text_absorber.text

# Definiera filvägen
file_path = "extracted-text.txt"

# Öppna filen i skrivläge och skriv den extraherade texten
with open(file_path, "w", encoding="utf-8") as tw:
    tw.write(extracted_text + "\n")  # Write the extracted text with a newline

Analysera text från en specifik sida i en PDF

Vi kan också extrahera text från en specifik sida av ett PDF-dokument genom att något modifiera den tidigare metoden. Istället för att bearbeta hela dokumentet, behöver du bara kalla på accept()-metoden på den önskade sidan av Document-objektet. Ange helt enkelt sidnumret med hjälp av dess index och Aspose.PDF kommer endast att extrahera text från den sidan. Denna metod är användbar när man hanterar stora PDF-filer där du bara behöver data från en viss sektion, vilket förbättrar effektiviteten och prestandan.

Följande kodexempel visar hur man analyserar text från en specifik sida av en PDF i Python.

# Detta kodexempel visar hur man extraherar text från en specifik sida av ett PDF-dokument i Python
import aspose.pdf as ap

# Öppna PDF-dokumentet
document = ap.Document("AddText.pdf")

# Skapa textabsorber
text_absorber = ap.text.TextAbsorber()

# Anropa accept-metoden för att bearbeta alla sidor
document.pages[1].accept(text_absorber)

# Hämta den extraherade texten
extracted_text = text_absorber.text

# Definiera filvägen
file_path = "extracted-text.txt"

# Öppna filen i skrivläge och skriv den extraherade texten
with open(file_path, "w", encoding="utf-8") as tw:
    tw.write(extracted_text + "\n")  # Write the extracted text with a newline

Analysera text från ett specifikt område i en PDF

Ibland kan vi behöva extrahera text från en viss del av en PDF-sida istället för att hämta innehåll från hela dokumentet. För att rikta in oss på ett specifikt område, använd Rectangle-egenskapen av TextSearchOptions. Denna egenskap accepterar ett Rectangle-objekt, som definierar koordinaterna för det önskade området. Genom att specificera denna gräns kan vi extrahera text endast från det valda området, vilket ignorerar resten av sidinnehållet.

Steg för att extrahera text från en specifik sidregion

  1. Ladda PDF-dokumentet med Document-klassen.
  2. Skapa en TextAbsorber klassinstans för att fånga text från dokumentet.
  3. Definiera målområdet med TextSearchOptions.Rectangle, som specificerar området för att extrahera text från.
  4. Applicera textutvinning på en specifik sida genom att anropa accept()-metoden på en vald sida.
  5. Hämta den extraherade texten från Text-egenskapen hos TextAbsorber.
  6. Process the output as needed.

Följande kodexempel visar hur man analyserar text från ett specifikt område av en PDF-sida i Python.

# Detta kodexempel visar hur man extraherar text från ett specifikt område av en sida i ett PDF-dokument med Python.
import aspose.pdf as ap

# Öppna PDF-dokument
document = ap.Document("sample.pdf")

# Skapa TextAbsorber-objekt för att extrahera text
absorber = ap.text.TextAbsorber()
absorber.text_search_options.limit_to_page_bounds = True
absorber.text_search_options.rectangle = ap.Rectangle(100, 200, 250, 350, True)

# Acceptera absorberaren för första sidan
document.pages[1].accept(absorber)

# Get the extracted text
extracted_text = absorber.text

# Definiera filvägen
file_path = "extracted-text.txt"

# Öppna filen i skrivläge och skriv den extraherade texten
with open(file_path, "w", encoding="utf-8") as tw:
    tw.write(extracted_text + "\n")  # Write the extracted text with a newline

Denna metod gör att du exakt kan extrahera text från tabellceller, formulärfält eller vilket som helst definierat avsnitt av en sida, vilket gör den idealisk för dokumentautomatisering och dataanalys.

Utdragning av text från fler-kolumn PDF-filer

PDF-dokument innehåller ofta en blandning av element såsom text, bilder, anteckningar, bilagor och diagram. När man hanterar PDF-filer med flera kolumner kan det vara en utmaning att extrahera text samtidigt som man behåller den ursprungliga layouten.

Aspose.PDF för Python förenklar denna process genom att låta utvecklare manipulera textens egenskaper innan extraktion. Genom att justera teckenstorlekar och sedan extrahera text kan du uppnå renare och mer strukturerad output. Följande steg visar hur man tillämpar denna metod för noggrann textutvinning från flerkolumniga PDF-filer.

Steg för att extrahera text från en flervals-PDF i Python

  1. Ladda PDF-dokumentet med hjälp av Document-klassen.
  2. Skapa en instans av TextFragmentAbsorber för att lokalisera och extrahera individuella textfragment från dokumentet.
  3. Hämta alla upptäckta textfragment och minska deras teckenstorlek med 70% för att förbättra extraktionsnoggrannheten.
  4. Spara det modifierade dokumentet i en minnesström för att undvika att spara en mellanliggande fil.
  5. Ladda PDF-filen från minnesströmmen för att bearbeta den justerade texten.
  6. Använd TextAbsorber för att hämta strukturerad text från det modifierade dokumentet.
  7. Spara den extraherade texten till en .txt-fil för vidare användning.

Följande kodexempel visar hur man extraherar text från en PDF med flera kolumner samtidigt som layouten bevaras.

# Detta kodexempel visar hur man extraherar text från en PDF med flera kolumner i Python
import io
import aspose.pdf as ap

# Öppna PDF-dokumentet
document = ap.Document("multi-column-sample.pdf")

# Skapa TextFragmentAbsorber-objekt för att extrahera text
text_fragment_absorber = ap.text.TextFragmentAbsorber()

# Acceptera absorbenten för första sidan
document.pages.accept(text_fragment_absorber)

# Hämta samlingen av extraherade textfragment
text_fragment_collection = text_fragment_absorber.text_fragments

# Minska teckenstorleken med minst 70 % för att förbättra textutvinning
for text_fragment in text_fragment_collection:
    text_fragment.text_state.font_size *= 0.7

# Spara det modifierade dokumentet till en minnesström
source_stream = io.BytesIO()
document.save(source_stream)

# Ladda om dokumentet från minnesströmmen
source_stream.seek(0)
dest_document = ap.Document(source_stream)

# Initiera TextAbsorber för att extrahera den uppdaterade texten
text_absorber = ap.text.TextAbsorber()
dest_document.pages.accept(text_absorber)
extracted_text = text_absorber.text

# Spara den extraherade texten till en fil
with open("ExtractColumnsText_out.txt", "w", encoding="utf-8") as file:
    file.write(extracted_text)

Denna metod säkerställer att text som extraheras från PDF:er med flera kolumner behåller sin ursprungliga layout så noggrant som möjligt.

Förbättrad textanalys med ScaleFactor

Aspose.PDF för Python gör det möjligt att analysera PDF-filer och extrahera text från en specifik sida med avancerade alternativ för textutvinning, såsom textformateringsläge och skalfaktor. Dessa alternativ hjälper till att noggrant extrahera text från komplexa PDF-filer, inklusive dokument med flera kolumner.

Genom att använda alternativet ScaleFactor kan vi finjustera det interna textgallret för bättre noggrannhet. En skalfaktor mellan 1 och 0.1 fungerar som teckenstorleksreduktion, vilket hjälper till att justera extraherad text korrekt. Värden mellan 0.1 och -0.1 behandlas som noll, vilket möjliggör automatisk skalning baserat på den genomsnittliga glyfbredden för det mest använda typsnittet på sidan. Om ingen ScaleFactor är inställd tillämpas standardvärdet 1.0, vilket säkerställer att inga skaljusteringar görs. För storskalig textextraktion rekommenderas automatisk skalning (ScaleFactor = 0), men att manuellt ställa in ScaleFactor = 0.5 kan förbättra resultaten för komplexa layouter. Onödig skalning påverkar dock

Steg för att extrahera text från en specifik sida med skalfaktor

  1. Ladda PDF-dokumentet med Document-klassen.
  2. Skapa en instans av TextAbsorber för att extrahera text.
  3. Ställ in TextExtractionOptions på PURE formateringsläge för noggrann extrahering.
  4. Justera scalefactor för att optimera textigenkänning i flerkolumns-PDF-filer.
  5. Anropa accept()pages-kollektionen för att extrahera text.
  6. Spara det extraherade innehållet i en textfil.
# Detta kodexempel visar hur man extraherar text från ett specifikt område av en sida i ett PDF-dokument med hjälp av Python
import aspose.pdf as ap

# Öppna PDF-dokument
document = ap.Document("sample.pdf")

# Initiera TextAbsorber med alternativ för textutvinning
text_absorber = ap.text.TextAbsorber()

# Ställ in extraktionsalternativ
extraction_options = ap.text.TextExtractionOptions(ap.text.TextExtractionOptions.TextFormattingMode.PURE)
extraction_options.scale_factor = 0.5  # Adjusts text recognition for better column detection
text_absorber.extraction_options = extraction_options

# Extrahera text från den angivna sidan
document.pages.accept(text_absorber)

# Get extracted text
extracted_text = text_absorber.text

# Spara extraherad text till en fil
with open("ExtractTextUsingScaleFactor_out.txt", "w", encoding="utf-8") as file:
    file.write(extracted_text)

Analysera text i PDF: Alternativ metod

Aspose.PDF för Python erbjuder också ett alternativt tillvägagångssätt för att extrahera text med hjälp av TextDevice-klassen. Vänligen läs mer om extracting text from PDF using the TextDevice.

Hur man analyserar tabeller från en PDF i Python

Att extrahera tabeller från PDF-filer är avgörande för dataanalys, automatisering och rapportering. PDF-filer innehåller ofta strukturerad data i tabellformat, vilket kan vara utmanande att hämta med hjälp av standardmetoder för textutvinning. Lyckligtvis erbjuder Aspose.PDF för Python ett kraftfullt sätt att extrahera tabeller med hög noggrannhet och bevara deras struktur och innehåll.

Klassen TableAbsorber är speciellt utformad för att upptäcka och extrahera tabeller från PDF-sidor. Den behandlar varje sida, identifierar tabeller och hämtar individuella rader och celler samtidigt som den behåller deras struktur. Nedan är stegen för att extrahera tabeller från ett PDF-dokument med hjälp av Aspose.PDF för Python.

Steg för att analysera tabeller från en PDF i Python

  1. Ladda PDF-filen som innehåller tabeller med hjälp av Document-klassen.
  2. Loopa genom pages-samlingen i dokumentet för att bearbeta varje sida individuellt.
  3. Skapa en instans av TableAbsorber-klassen för att upptäcka och extrahera tabeller.
  4. Anropa visit()-metoden för att identifiera tabeller på den aktuella sidan.
  5. Iterera igenom listan av extraherade tabeller och hämta rader och celler.
  6. Åtkomst till textfragments för varje cell och extrahera text med hjälp av segments-egenskapen.
  7. Spara den extraherade tabellinformationen för vidare analys eller visa den i konsolen.
# Detta kodexempel visar hur man extraherar tabeller från ett PDF-dokument i Python.
import aspose.pdf as ap

# Load PDF file
document = pdf.Document("sample.pdf")

# Bearbeta alla sidor
for page in document.pages:
    # Initiera TableAbsorber-objekt
    absorber = ap.text.TableAbsorber()
    # Identifiera tabeller på den aktuella sidan
    absorber.visit(page)
    # Loopa genom de extraherade tabellerna
   for table in absorber.table_list:
        # Iterate through all the rows in the table
       for row in table.row_list:
            # Iterera genom alla kolumner i raden
           for cell in row.cell_list:
                # Hämta textfragmenten
                text_fragment_collection = cell.text_fragments
                # Iterera genom textfragmenten
               for fragment in text_fragment_collection:
                    # Print the text
                    print(fragment.text)

Genom att följa dessa steg kan du effektivt extrahera tabeller från PDF-filer, vilket gör det enklare att bearbeta och analysera strukturerad data.

Analysera PDF-metadata: Hämta PDF-filinformation i Python

När du arbetar med PDF-filer är det ofta nödvändigt att hämta metadata såsom författare, skapelsedatum, nyckelord och titel. Aspose.PDF för Python gör detta enkelt genom att ge åtkomst till DocumentInfo-objektet via Info-egenskapen i Document-klassen. Detta gör att du kan extrahera viktiga dokumentegenskaper programmässigt.

Steg för att analysera PDF-metadata

  1. Använd Document-klassen för att öppna den önskade PDF-filen.
  2. Hämta DocumentInfo-objektet med hjälp av info-egenskapen.
  3. Åtkomst till specifika detaljer som författare, skapelsedatum, titel, ämne och nyckelord.
  4. Skriv ut metadata eller spara den för vidare bearbetning.

Följande Python-script visar hur man hämtar och visar nyckeldetaljer från en PDF-fil i Python:

# Detta kodexempel visar hur man extraherar filinformation i Python.
import aspose.pdf as ap

# Ladda PDF-dokumentet
document = ap.Document("Sample.pdf")

# Hämta dokumentinformation
doc_info = document.info

# Visa dokumentmetadata
print(f"Author: {doc_info.author}")
print(f"Creation Date: {doc_info.creation_date}")
print(f"Keywords: {doc_info.keywords}")
print(f"Modify Date: {doc_info.mod_date}")
print(f"Subject: {doc_info.subject}")
print(f"Title: {doc_info.title}")

Parsing Images from a PDF File Using Python

Vi kan analysera ett PDF-dokument och effektivt hämta bilder som är inbäddade i dokumentet. Vi kan extrahera högkvalitativa bilder från specifika sidor och spara dem separat för vidare användning.

Varje PDF-sida lagrar sina bilder inom resurskollektionen, specifikt inuti XImage-kollektionen. För att extrahera en bild, få tillgång till den önskade sidan, hämta bilden från Images-kollektionen med hjälp av dess index och spara den.

Steg för att analysera bilder från en PDF i Python

  1. Ladda PDF-filen som innehåller en bild med Document-klassen.
  2. Hämta den specifika sidan från vilken du vill extrahera en bild.
  3. Åtkomst till Images-samlingen av sidans resources och specificera bildindex.
  4. Spara den extraherade bilden med hjälp av strömmen.

Ett följande kodexempel visar hur man kan tolka bilder från en PDF i Python.

# Detta kodexempel visar hur man extraherar bilder från en PDF i Python
import aspose.pdf as ap

# Öppna dokument
document = ap.Document("Sample.pdf")

# Extrahera en specifik bild (den första bilden från den första sidan)
x_image = document.pages[1].resources.images[1]

# Definiera utdata bildväg
output_image_path = "OutputImage.jpg"

# Spara den extraherade bilden
with open(output_image_path, "wb") as output_image:
    output_image.write(x_image.to_stream().read())

Denna metod ger ett enkelt och effektivt sätt att extrahera bilder från PDF-filer samtidigt som deras kvalitet bibehålls. Med Aspose.PDF för Python kan du automatisera bildextraktion för olika tillämpningar, såsom document processing, dataarkivering och innehållsanalys.

Hur man analyserar PDF-anteckningar i Python

Anteckningar i PDF-filer förbättrar dokumentinteraktionen genom att lägga till markeringar, figurer och klisterlappar. Varje annotationstyp har ett specifikt syfte, och Aspose.PDF för Python gör det enkelt att extrahera dem för analys eller behandling.

Analysera textanoteringar från en PDF i Python

PDF-dokument innehåller ofta textkommentarer, som fungerar som kommentarer eller anteckningar kopplade till specifika platser på en sida. När de är ihopfällda, visas dessa kommentarer som ikoner, och när de är utökade, visas text inuti ett pop-up fönster. Varje sida i en PDF har sin egen Annotations-samling, som rymmer alla kommentarer specifika för den sidan. Genom att utnyttja Aspose.PDF för Python kan du effektivt extrahera textkommentarer från en PDF-fil.

Steg för att parsa textanoteringar från en PDF

  1. Ladda PDF-dokumentet med Document-klassen.
  2. Hämta egenskapen annotations för en specifik sida för att få alla anteckningar på den sidan.
  3. Iterera genom kommentarerna och filtrera de med AnnotationType.TEXT.
  4. Hämta relevant information som annoteringsposition (rect) för vidare bearbetning eller visning.
import aspose.pdf as ap

# Ladda PDF-dokumentet
document = ap.Document("annotations.pdf")

# Loopa igenom alla anteckningar på den första sidan
for annotation in document.pages[1].annotations:
    if annotation.annotation_type == ap.annotations.AnnotationType.TEXT:
        # Skriv ut anteckningsdetaljer
        print(f"Title: {annotation.full_name}")
        print(f"Contents: {annotation.contents}")
        print(f"Annotation Rectangle: {annotation.rect}")

Genom att följa dessa steg kan du effektivt extrahera och bearbeta textannoteringar från PDF-dokument i Python.

Utforska mer om working with PDF Text Annotation in Python genom att besöka den officiella guiden.

Analysera markerad text från en PDF i Python

I många fall kan det vara nödvändigt att extrahera endast den markerade texten från en PDF snarare än hela innehållet. Oavsett om du analyserar viktiga anteckningar, sammanfattar nyckelpunkter eller automatiserar dokumentbearbetning, gör Aspose.PDF för Python det enkelt att enkelt hämta markerad text effektivt.

Markering av anteckningar markerar viktiga textavsnitt, vanligtvis används för recensioner eller studieanteckningar. Du kan extrahera markerad text och dess egenskaper, såsom färg och position, med hjälp av HighlightAnnotation-klassen.

Vi kan analysera markerade textkommentarer i ett PDF-dokument genom att följa stegen som nämnts tidigare. Men vi behöver bara nämna AnnotationType.HIGHLIGHT i steg 3.

Följande exempel visar hur man filtrerar och extraherar markerad text från en PDF.

import aspose.pdf as ap

# Ladda PDF-dokumentet
document = ap.Document("annotations.pdf")

# Loopa igenom alla anteckningar på första sidan
for annotation in document.pages[1].annotations:
    if annotation.annotation_type == ap.annotations.AnnotationType.HIGHLIGHT:
        # Skriv ut annotationsdetaljer
        print(f"Title: {annotation.full_name}")
        print(f"Annotation Rectangle: {annotation.rect}")

Lär dig mer om working with PDF Highlights Annotation in Python genom att besöka den officiella guiden.

Parsing PDF Figures Annotation in Python

Figuranmärkningar inkluderar grafiska element som former, teckningar eller stämplar som används för betoning eller förklaringar. Att extrahera dessa anmärkningar involverar att identifiera InkAnnotation eller StampAnnotation objekt och hämta deras ritvägar eller bilder.

För att analysera linjeanvisningar i ett PDF-dokument, följ de tidigare angivna stegen. Den enda ändringen som krävs är att specificera AnnotationType.LINE i steg 3.

Följande exempel visar hur man analyserar linjeanotering i en PDF med Python.

import aspose.pdf as ap

# Ladda PDF-dokumentet
document = ap.Document("annotations.pdf")

# Loopa genom alla anteckningar på den första sidan
for annotation in document.pages[1].annotations:
    if annotation.annotation_type == ap.annotations.AnnotationType.LINE:
        # Skriv ut annotationsdetaljer
        print(f"Annotation Rectangle: {annotation.rect}")

Läs mer om working with PDF Figures Annotations in Python här.

Länkannoteringar i PDF-filer gör det möjligt för användare att navigera sömlöst inom ett dokument, öppna externa filer eller besöka webbplatser direkt från PDF-filen. Dessa hyperlänkar förbättrar interaktiviteten och förbättrar användarupplevelsen genom att erbjuda snabb åtkomst till ytterligare information.

För att extrahera länkanteckningar från en PDF, följ samma steg som tidigare, men i steg 3, se till att specificera AnnotationType.LINK. Detta säkerställer att endast länkanteckningar hämtas.

Följande kodexempel visar hur man tolkar länkanteckningar i en PDF med hjälp av Python.

import aspose.pdf as ap

# Ladda PDF-dokumentet
document = ap.Document("annotations.pdf")

# Loopa genom alla anteckningar på första sidan
for annotation in document.pages[1].annotations:
    if annotation.annotation_type == ap.annotations.AnnotationType.LINK:
        # Skriv ut anmälningsdetaljer
        print(f"Annotation Rectangle: {annotation.rect}")

Genom att utnyttja Aspose.PDF för Python kan du effektivt extrahera och manipulera länkannoteringar för olika användningsfall, såsom att indexera dokument eller förbättra navigering.

Läs hela detaljerna om handling Link Annotations in PDFs här.

Slutsats

Aspose.PDF för Python är det bästa Python PDF-parsningsbiblioteket för utvecklare som behöver en pålitlig, effektiv och funktionsrik lösning för att parsning av PDF-filer. Oavsett om du behöver parsa text, tabeller, bilder, metadata eller anteckningar, tillhandahåller Aspose.PDF de nödvändiga verktygen.

Testa de tillhandahållna kodproverna och börja bearbeta PDF-filer och förenkla dina PDF-bearbetningsuppgifter i Python!

Vid eventuella frågor eller behov av ytterligare hjälp, tveka inte att kontakta oss på vårt free support forum.

Se Även