Sök och hämta text allt

Introduktion

Har du någonsin behövt extrahera specifik text från en PDF men tyckt att det var svårt? PDF-filer kan ibland kännas som låsta behållare, vilket gör det svårt att få den information du behöver. Men här är de goda nyheterna: med Aspose.PDF för .NET kan du enkelt söka och hämta text från vilken PDF-fil som helst. Detta kraftfulla bibliotek ger allt du behöver för att arbeta med PDF-filer i dina .NET-program, vilket gör textextraktion till en lek. I den här handledningen går vi igenom processen att söka och extrahera text från en PDF-fil med Aspose.PDF för .NET. Oavsett om du bygger ett textanalysverktyg eller bara behöver automatisera datautvinning från PDF-rapporter, så är du på rätt plats!

Förutsättningar

Innan vi går in i koden, låt oss se till att du har allt konfigurerat:

  1. Aspose.PDF för .NET: Du måste ladda ner och installera Aspose.PDF för .NET. Du kan hämta det från nedladdningssidanhär.
  2. .NET-miljö: Se till att du har konfigurerat .NET Framework eller .NET Core på din utvecklingsmaskin.
  3. Grundläggande C##-kunskaper: Viss förtrogenhet med C# och arbete med .NET-projekt rekommenderas.
  4. PDF-dokument: Ett exempel på PDF-fil som vi kommer att extrahera text från. I det här exemplet kommer vi att användaSearchAndGetTextFromAll.pdf.

Importera paket

Innan du skriver någon kod måste du importera de nödvändiga namnrymden till ditt projekt för att arbeta med Aspose.PDF.

using System.IO;
using Aspose.Pdf;
using Aspose.Pdf.Text;
using System;

Dessa namnrymder ger tillgång till dokumentobjektmodellen för PDF:en och tillåter oss att manipulera text i filen.

Låt oss dela upp processen i enkla steg så att du enkelt kan följa med.

Steg 1: Ställ in dokumentkatalogen

Först och främst måste du ange sökvägen till katalogen där din PDF-fil finns. Detta hjälper programmet att hitta filen som du ska extrahera texten från.

// Sökvägen till dokumentkatalogen.
string dataDir = "YOUR DOCUMENT DIRECTORY";
  • DedataDir variabel bör peka till katalogen där dinSearchAndGetTextFromAll.pdf filen lagras.
  • Ersätta"YOUR DOCUMENT DIRECTORY" med den faktiska sökvägen på din maskin.

Steg 2: Öppna PDF-dokumentet

Därefter öppnar vi PDF-dokumentet med Aspose.PDF:sDocument objekt.

// Öppna dokumentet
Document pdfDocument = new Document(dataDir + "SearchAndGetTextFromAll.pdf");
  • Vi skapar en ny instans avDocument klass genom att skicka hela sökvägen till PDF-filen.
  • Detta kommer att ladda PDF:en i minnet, vilket gör den redo för bearbetning.

Steg 3: Skapa en textabsorberare

DeTextFragmentAbsorber objekt används för att söka efter specifik text i PDF:en. I det här fallet kommer vi att leta efter ordet “text”.

// Skapa TextAbsorber-objekt för att hitta alla instanser av den inmatade sökfrasen
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("text");
  • DeTextFragmentAbsorber initieras med strängen"text". Det betyder att det kommer att leta efter alla förekomster av ordet “text” i PDF-dokumentet.

Steg 4: Acceptera Absorbern för alla sidor

Nu kommer vi att instruera PDF-dokumentet att acceptera absorbenten och söka efter texten på alla dess sidor.

// Acceptera absorbenten för alla sidor
pdfDocument.Pages.Accept(textFragmentAbsorber);
  • DeAccept metod tillämpas på dokumentets sidor. Detta kommer att söka på alla sidor efter den angivna texten.

Steg 5: Extrahera textfragment

När absorbatorn har skannat dokumentet kan vi hämta de extraherade textfragmenten.

// Hämta de extraherade textfragmenten
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
  • DeTextFragments egendom avTextFragmentAbsorber returnerar en samling av alla textfragment som matchar söktermen.

Steg 6: Gå igenom textfragmenten

Nu när vi har samlingen av textfragment går vi igenom dem och extraherar detaljerna.

// Gå igenom fragmenten
foreach (TextFragment textFragment in textFragmentCollection)
{
    Console.WriteLine("Text : {0} ", textFragment.Text);
    Console.WriteLine("Position : {0} ", textFragment.Position);
    Console.WriteLine("XIndent : {0} ", textFragment.Position.XIndent);
    Console.WriteLine("YIndent : {0} ", textFragment.Position.YIndent);
    Console.WriteLine("Font - Name : {0}", textFragment.TextState.Font.FontName);
    Console.WriteLine("Font - IsAccessible : {0} ", textFragment.TextState.Font.IsAccessible);
    Console.WriteLine("Font - IsEmbedded : {0} ", textFragment.TextState.Font.IsEmbedded);
    Console.WriteLine("Font - IsSubset : {0} ", textFragment.TextState.Font.IsSubset);
    Console.WriteLine("Font Size : {0} ", textFragment.TextState.FontSize);
    Console.WriteLine("Foreground Color : {0} ", textFragment.TextState.ForegroundColor);
}
  • Deforeach loop itererar genom varjeTextFragment i samlingen.
  • Vi skriver ut olika egenskaper för varje fragment, som den faktiska texten, dess placering på sidan, teckensnittsdetaljer och teckenstorlek.
  • DeXIndent ochYIndent egenskaper ger de exakta koordinaterna för textfragmentet i PDF-filen.

Slutsats

Och där har du det! Med bara några rader kod har vi framgångsrikt sökt och extraherat text från en PDF med Aspose.PDF för .NET. Flexibiliteten hos Aspose.PDF låter dig manipulera PDF-filer på många sätt, vilket gör det till ett utmärkt val för utvecklare som behöver robusta PDF-lösningar i .NET-miljöer. Du kan enkelt utöka det här exemplet för att söka efter andra ord, extrahera fler detaljer eller till och med manipulera PDF-innehållet baserat på dina behov. Förhoppningsvis har den här guiden gett dig ett tydligt och enkelt sätt att arbeta med PDF-filer. Varsågod och prova det med dina egna PDF-filer!

FAQ’s

Kan jag söka efter flera ord samtidigt?

Ja, du kan ändraTextFragmentAbsorber för att söka efter flera fraser genom att justera söksträngen därefter.

Vad händer om texten sträcker sig över flera rader?

Aspose.PDF kommer fortfarande att känna igen och extrahera text även om den sträcker sig över flera rader. Du kan hantera dessa fragment individuellt.

Hur sparar jag den extraherade texten till en fil?

Du kan skriva den extraherade texten till en fil med vanliga C#-fil I/O-operationer, som t.exStreamWriter.

Stöder Aspose.PDF extrahering av text från skannade PDF-filer?

Aspose.PDF stöder inte OCR. För skannade PDF-filer skulle du behöva ett OCR-verktyg för att känna igen texten.

Hur hanterar jag krypterade PDF-filer?

Om din PDF är lösenordsskyddad kan du låsa upp den med Aspose.PDF genom att ange lösenordet när du laddar dokumentet.