Extraire le texte d'un PDF C++

L’extraction de texte à partir de documents (PDF, traitement de texte, pages web, etc.) a des cas d’utilisation variés dans le monde de l’information numérique. Par exemple, il peut être utilisé pour analyser des documents, effectuer une analyse de texte, récupérer des informations, stocker le contenu de documents dans des bases de données, etc. Si nous le réduisons, le PDF est l’un des formats de document les plus largement utilisés pour conserver et partager des informations numériques. Cette popularité fait des documents PDF une énorme source d’informations. Par conséquent, l’analyse ou l’extraction de texte à partir de documents PDF pourrait éventuellement être impliquée dans un certain nombre de scénarios d’analyse de texte.

Afin d’automatiser l’analyse PDF dans les applications C++, cet article montre comment extraire du texte de documents PDF à l’aide de C++. Il couvre les scénarios d’extraction de texte suivants :

  • Extraire le texte d’un document PDF en utilisant C++.
  • Extrayez du texte de pages particulières d’un document PDF à l’aide de C++.
  • Extraction de texte page par page d’un document PDF en C++.

Lecteur PDF C++ et bibliothèque d’extraction de texte

Pour extraire du texte de documents PDF, nous utiliserons Aspose.PDF for C++ qui est une puissante bibliothèque PDF pour créer, convertir et analyser des documents PDF. Vous pouvez télécharger les fichiers de bibliothèque ainsi que les exemples de code en cours d’exécution à partir de la section Téléchargements.

Extraire le texte d’un PDF en utilisant C++

Aspose.PDF for C++ vous permet d’analyser les documents PDF en quelques étapes simples. Voici la recette pour extraire du texte d’un document PDF.

L’exemple de code suivant montre comment extraire du texte d’un PDF à l’aide de C++.

auto extractor = MakeObject<Facades::PdfExtractor>();
// Lier le document PDF source
extractor->BindPdf(u"candy.pdf");
// Extraire le texte d'un PDF vers PdfExtractor
extractor->ExtractText();
auto memStream = MakeObject<IO::MemoryStream>();
// Enregistrer le texte dans le flux de mémoire
extractor->GetText(memStream);
auto unicode = System::Text::Encoding::get_Unicode();
String allText = unicode->GetString(memStream->ToArray());
// Imprimer le texte extrait
Console::WriteLine(u"Extracted text:");
Console::WriteLine(allText);

Extraire du texte de pages particulières au format PDF à l’aide de C++

Il peut arriver que vous ayez besoin d’extraire du texte de quelques pages de PDF uniquement. Dans un tel cas, vous pouvez spécifier une plage de pages dans le PDF en définissant les numéros de page de début et de fin. Voici les étapes pour extraire du texte de pages particulières dans un document PDF.

L’exemple de code suivant montre comment extraire du texte de pages particulières de PDF en C++.

auto extractor = MakeObject<Facades::PdfExtractor>();
// Lier le document PDF source
extractor->BindPdf(u"candy.pdf");
// Définir la plage de pages
extractor->set_StartPage(2);
extractor->set_EndPage(2);
// Extraire le texte d'un PDF vers PdfExtractor
extractor->ExtractText();
auto memStream = MakeObject<IO::MemoryStream>();
// Enregistrer le texte dans le flux de mémoire
extractor->GetText(memStream);
auto unicode = System::Text::Encoding::get_Unicode();
String allText = unicode->GetString(memStream->ToArray());
// Imprimer le texte extrait
Console::WriteLine(u"Extracted text:");
Console::WriteLine(allText);

Extraire le texte page par page d’un PDF en C++

Au lieu d’extraire tout le texte d’un document PDF, vous pouvez extraire le texte de chaque page du document séparément. Voici les étapes à suivre pour effectuer l’extraction de texte page par page à partir d’un PDF.

L’exemple de code suivant montre comment extraire du texte page par page d’un PDF en C++.

auto extractor = MakeObject<Facades::PdfExtractor>();
// Lier le document PDF source
extractor->BindPdf(u"candy.pdf");
// Extraire le texte d'un PDF vers PdfExtractor
extractor->ExtractText();
auto unicode = System::Text::Encoding::get_Unicode();
int pageNumber = 1; 

while (extractor->HasNextPageText())
{
	auto memStream = MakeObject<IO::MemoryStream>();
	extractor->GetNextPageText(memStream);
	String text;
	// Spécifiez le type d'encodage Unicode dans le constructeur StreamReader
	auto streamReader = MakeObject<StreamReader>(memStream, unicode);
	streamReader->get_BaseStream()->Seek(0, SeekOrigin::Begin);
	text = streamReader->ReadToEnd();
	streamReader->Dispose();
	// Imprimer le texte extrait
	std::cout << "Page: " << pageNumber << "\n";
	Console::Write(text);
	std::cout << "\n------------------------\n";
	pageNumber++;
}

En savoir plus sur Aspose.PDF for C++

Vous pouvez en savoir plus sur Aspose.PDF for C++ en utilisant la documentation.

Voir également