Charger et convertir un PDF dans une table CAS
Il arrive souvent que vos documents ne résident pas dans un fichier SAS ou une table CAS. Il peut arriver que vous ayez besoin de charger le contenu d'un document PDF dans CAS.
Cet exemple utilise l'action loadTable pour vous permettre de charger et de convertir des fichiers de document dans une table CAS, qui peut ensuite être analysée.
D'abord, nous devons créer une session CAS (pour plus d'information sur les sessions CAS, vous pouvez lire mon article sur le sujet : Les sessions CAS dans Viya)
Puis créons une caslib de type "path" pointant sur le répertoire /opt/data/PDF. Il est important de positionner l'option subDirectories à TRUE;
Enfin, créons le libname associé à la ma caslib en utilisant la syntaxe ci-dessous :
Regardons maintenant comment charger un document pdf dans cette nouvelle caslib.
Voici le code complet :
Cette PROC CAS utilise l'action loadTable de l'actionSet "Tabel" pour lire un ou plusieurs fichiers d'un répertoire, puis convertir le fichier et l’insérer dans une table CAS.
La valeur du nom du paramètre casOut spécifie le nom de la table CAS en sortie (Verlaine) .
La valeur du paramètre caslib spécifie le nom de la bibliothèque d'entrée à utiliser (libpdf).
La valeur DOCUMENT du paramètre fileType spécifie l'utilisation de la conversion de document.
Le paramètre fileExtList spécifie les extensions de fichier que vous souhaitez charger et convertir. (pdf)
La valeur que vous spécifiez pour le paramètre recurse (TRUE ou FALSE) indique si vous souhaitez charger de manière récursive des fichiers dans des sous-répertoires. La valeur par défaut du paramètre recurse est TRUE.
Les paramètres tikaConv et tikaPath spécifient si vous souhaitez effectuer une
conversion Tika. Tika est une boîte à outils d'analyse de contenu. Tika détecte et extrait les métadonnées et le texte de plus de mille types de fichiers différents (tels que PPT, XLS et PDF). Tous ces types de fichiers peuvent être analysés via une interface unique, ce qui rend Tika utile pour l'indexation des moteurs de recherche, l'analyse de contenu, la traduction, etc. La valeur par défaut du paramètre tikaConv est FALSE. Si la valeur du paramètre tikaConv est TRUE, vous pouvez utiliser le paramètre tikaPath pour spécifier le chemin d'accès au répertoire où se trouvent les fichiers JAR Tika.
Le paramètre path spécifie le répertoire contenant les fichiers à convertir.(source qui doit être un sous-repertoire de la caslib libpdf : /opt/data/PDF/source)
La copie d'écran ci-dessous montre le contenu du répertoire /opt/data/PDF/source :
Voici le résultat de l'exécution du programme :
La table Verlaine est créée :
Cette table contient le contenu du pdf :
1 |
cas sessionhousset sessopts=(caslib=casuser timeout=3600 metrics=true); |
1 2 3 4 5 6 7 |
proc cas; table.addCaslib / dataSource={srcType="PATH"} name="libpdf" path="/opt/data/PDF" subDirectories=TRUE; run; |
1 |
caslib _all_ assign; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
proc cas; builtins.loadActionSet / actionSet="table"; run; table.loadTable / casOut={name="verlaine", replace=TRUE } caslib="libpdf" importOptions={fileType="DOCUMENT", fileExtList={"PDF"}, recurse=TRUE, tikaConv=TRUE, tikaPath="/opt/sas/viya/home/SASFoundation/lib/docconvjars" } path="source"; run; quit; |
1 2 3 |
proc sql; select * from libpdf.verlaine; quit; |