Recherche de site Web

Compter les caractères et les mots dans les fichiers PDF en utilisant Python sous Linux


Compter les mots et les caractères dans les fichiers texte est simple, mais que faire si vous devez faire la même chose avec des fichiers PDF ? Les PDF sont largement utilisés pour partager des documents car ils conservent la mise en forme sur différents appareils. Cependant, leur structure rend l'extraction de texte un peu plus complexe que pour les fichiers texte simples. Dans cet article, je vais vous guider pour créer un script Python capable de compter le nombre de mots et de caractères dans un fichier PDF sous Linux.

Configuration de votre environnement

Avant d'écrire le script, vous devrez avoir Python installé sur votre système. De plus, nous utiliserons la bibliothèque PyPDF2 pour extraire le texte des fichiers PDF. Vous pouvez installer cette bibliothèque en utilisant pip :

pip install PyPDF2

Avec PyPDF2 installé, nous sommes prêts à commencer.

Un script Python pour compter les mots et les caractères dans les fichiers PDF

Le script Python complet pour compter le nombre de mots et de caractères dans un fichier PDF est disponible sur notre page gist de GitHub :

Ce script Python analysera un fichier PDF en extrayant son contenu textuel puis en comptant le nombre total de mots et de caractères dans ce texte. Il utilise la bibliothèque PyPDF2 pour lire le fichier PDF et le module argparse pour gérer les arguments de la ligne de commande.

Le script inclut les deux options : compter les caractères en incluant les sauts de ligne et en les excluant.

#!/usr/bin/env python3
# ------------------------------------------------------------------
# Script Name:   pdfcwcount.py
# Description:   A Python Script to Count Characters and Words
#                in a PDF File.
# Website:       https://gist.github.com/ostechnix
# Version:       1.0
# Usage:         python pdfcwcount.py filename
# ------------------------------------------------------------------
import PyPDF2
import argparse
def extract_text_from_pdf(file_path):
    """Extracts text from a PDF file."""
    try:
        with open(file_path, 'rb') as file:
            reader = PyPDF2.PdfReader(file)
            text = ''
            for page in range(len(reader.pages)):
                text += reader.pages[page].extract_text()
            return text
    except FileNotFoundError:
        print(f"The file {file_path} does not exist.")
        return ''
def count_words_in_text(text):
    """Counts the number of words in a given text."""
    words = text.split()
    return len(words)
def count_characters_in_text(text, include_newlines=True):
    """Counts the number of characters in a given text."""
    if not include_newlines:
        text = text.replace('\n', '')
    return len(text)
if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Count the number of words and characters in a PDF file.")
    parser.add_argument("file_path", type=str, help="Path to the PDF file.")
    
    args = parser.parse_args()
    text = extract_text_from_pdf(args.file_path)
    if text:
        # Calculate counts
        word_count = count_words_in_text(text)
        character_count_with_newlines = count_characters_in_text(text, include_newlines=True)
        character_count_without_newlines = count_characters_in_text(text, include_newlines=False)
        # Display results in a neat format
        print("\n--- PDF File Analysis Report ---")
        print(f"File: {args.file_path}")
        print(f"Total Words: {word_count}")
        print(f"Total Characters (including newlines): {character_count_with_newlines}")
        print(f"Total Characters (excluding newlines): {character_count_without_newlines}")
        print("-----------------------------\n")

Comment ce script fonctionne

  1. Extraction de texte : La fonction extract_text_from_pdf lit le fichier PDF et extrait le texte de chaque page. Cette fonction gère les défis spécifiques aux PDF, tels que la lecture de données binaires et la navigation à travers plusieurs pages.
  2. Comptage des mots et des caractères:

    • La fonction count_words_in_text divise le texte en mots en fonction des espaces et les compte.
    • La fonction count_characters_in_text compte les caractères. Elle offre également une option pour inclure ou exclure les caractères de nouvelle ligne, selon vos besoins.
  3. Entrée de l'utilisateur : Le script accepte le chemin du fichier PDF comme argument. Il traite ensuite le fichier et affiche les résultats, montrant à la fois le nombre de mots et le nombre de caractères avec et sans sauts de ligne.

Exécution du script

Vous pouvez exécuter le script depuis la ligne de commande en spécifiant le chemin vers votre fichier PDF. Voici un exemple :

python pdfcwcount.py path/to/your/file.pdf

Le script produira un rapport bien formaté qui montre le nombre total de mots, le nombre de caractères y compris les sauts de ligne, et le nombre de caractères sans les sauts de ligne.

Exemple:

$ python pdfcwcount.py ~/testfile.pdf

Exemple de sortie :

--- PDF File Analysis Report ---
File: /home/ostechnix/testfile.pdf
Total Words: 6
Total Characters (including newlines): 22
Total Characters (excluding newlines): 21
-----------------------------

Compter les caractères et les mots dans les fichiers PDF en utilisant Python

Comme vous pouvez le voir, le testfile.pdf contient 6 mots, 22 caractères en incluant les sauts de ligne et 21 en les excluant.

Conclusion

Ce script Python est un outil pratique pour analyser des fichiers PDF, que vous travailliez sur le traitement de documents, l'analyse de contenu, ou que vous soyez simplement curieux du contenu d'un PDF. Avec la capacité de compter les mots et les caractères avec ou sans les caractères de nouvelle ligne, le script offre une flexibilité pour répondre à divers besoins. Essayez-le, et vous le trouverez une addition utile à votre boîte à outils pour travailler avec des fichiers PDF.