Extraire le contenu balisé des PDF en Python
Dans cet article, vous apprendrez comment extraire le contenu balisé des documents PDF en utilisant Python.
Utilisez ces exemples lorsque vous devez inspecter un PDF balisé, lire l’arbre de structure logique ou valider que les éléments de structure ont été créés correctement pour les flux de travail d’accessibilité.
Obtenir le contenu du PDF balisé
Afin d’obtenir le contenu d’un Document PDF avec du texte balisé, Aspose.PDF propose tagged_content propriété de Document classe.
Créez un document PDF avancé, entièrement balisé, avec une table des matières structurée et hiérarchique (TOC):
- Créez un nouvel objet Document.
- Accédez à la propriété tagged_content.
- Définissez le titre du document en utilisant ‘set_title()’.
- Définissez la langue du document en utilisant ‘set_language()’.
- Enregistrez le document.
import aspose.pdf as ap
from aspose.pycore import cast
import sys
from os import path
# region Extract Tagged Content from PDF
def get_tagged_content(outfile):
# Create PDF Document
with ap.Document() as document:
# Get Content for work with Tagged PDF
tagged_content = document.tagged_content
# Work with Tagged PDF content
# Set Title and Language for Document
tagged_content.set_title("Simple Tagged Pdf Document")
tagged_content.set_language("en-US")
# Save Tagged PDF Document
document.save(outfile)
Obtention de la structure racine
Les Tagged PDFs contiennent un arbre de structure logique qui définit la structure sémantique du document. Le StructTreeRoot représente la racine de cet arbre logique, tandis que le RootElement fournit une interface pour interagir avec l’élément de structure de niveau supérieur du document.
Le fragment de code suivant montre comment obtenir la structure racine d’un Tagged PDF Document :
- Créez un nouveau document PDF balisé.
- Accédez au contenu balisé et définissez les métadonnées.
- Accédez à StructTreeRoot et RootElement.
- Enregistrez le PDF balisé.
import aspose.pdf as ap
from aspose.pycore import cast
import sys
from os import path
def get_root_structure(outfile):
# Create PDF Document
with ap.Document() as document:
# Get Content for work with Tagged PDF
tagged_content = document.tagged_content
# Set Title and Language for Document
tagged_content.set_title("Tagged Pdf Document")
tagged_content.set_language("en-US")
# Properties StructTreeRootElement and RootElement are used for access to
# StructTreeRoot object of pdf document and to root structure element (Document structure element).
struct_tree_root_element = tagged_content.struct_tree_root_element
root_element = tagged_content.root_element
print(f"StructTreeRootElement: {struct_tree_root_element}")
print(f"RootElement: {root_element}")
# Save Tagged PDF Document
document.save(outfile)
Accéder aux éléments enfants
Les PDFs balisés contiennent un arbre de structure logique qui définit la hiérarchie sémantique du document (titres, paragraphes, formulaires, listes, etc.). Accéder à ces éléments de structure et les modifier vous permet de :
- Inspecter les métadonnées telles que le titre, la langue, actual_text et les propriétés liées à l’accessibilité
- Mettre à jour les propriétés pour améliorer l’accessibilité ou la localisation
- Ajuster programmatiquement la structure logique du document pour la conformité PDF/UA
Le fragment de code suivant montre comment accéder aux éléments enfants d’un Tagged PDF Document:
import aspose.pdf as ap
from aspose.pycore import cast
import sys
from os import path
def access_child_elements(infile, outfile):
# Open PDF Document
with ap.Document(infile) as document:
# Get Content for work with Tagged PDF
tagged_content = document.tagged_content
# Access to root element(s)
element_list = tagged_content.struct_tree_root_element.child_elements
for element in element_list:
if isinstance(element, ap.logicalstructure.StructureElement):
structure_element = cast(ap.logicalstructure.StructureElement, element)
# Get properties
print(
"StructureElement properties - "
f"title: {structure_element.title}, "
f"language: {structure_element.language}, "
f"actual_text: {structure_element.actual_text}, "
f"expansion_text: {structure_element.expansion_text}, "
f"alternative_text: {structure_element.alternative_text}"
)
# Access to child elements of first element in root element
element_list = tagged_content.root_element.child_elements[1].child_elements
for element in element_list:
if isinstance(element, ap.logicalstructure.StructureElement):
structure_element = element
# Set properties
structure_element.title = "title"
structure_element.language = "fr-FR"
structure_element.actual_text = "actual text"
structure_element.expansion_text = "exp"
structure_element.alternative_text = "alt"
# Save Tagged PDF Document
document.save(outfile)
Sujets liés aux PDF balisés
- Créer Tagged PDF pour créer des documents balisés accessibles avant d’inspecter leur structure.
- Définir les propriétés des éléments de structure mettre à jour les propriétés sémantiques après l’extraction des éléments de structure.
- Travailler avec la Table dans Tagged PDFs pour les flux de travail d’accessibilité des tables balisées.