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)
cas sessionhousset sessopts=(caslib=casuser timeout=3600 metrics=true);
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;
proc cas;
table.addCaslib /
dataSource={srcType="PATH"}
name="libpdf"
path="/opt/data/PDF"
subDirectories=TRUE;
run;
Enfin, créons le libname  associé à la ma caslib en utilisant la syntaxe ci-dessous :
caslib _all_ assign;
Regardons maintenant comment charger un document pdf dans cette nouvelle caslib. Voici le code complet :
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;
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 : sas_cas_tika_verlaine Voici le résultat de l'exécution du programme : log_cas_viya_convertir_pdf La table Verlaine est créée : log_cas_viya_convertir_pdf_avec_tika   Cette table contient le contenu du pdf :
proc sql;
select * from libpdf.verlaine;
quit;
log_cas_viya_convertir_pdf_avec_tika_resultat  

Nicolas Housset

Passionné d'informatique, je suis Consultant et expert technique SAS VIYA, également co-fondateur de la société Flexcelite. Spécialisé dans les technologies SAS (Viya, 9.4) et les infrastructures associées (Linux, Hadoop, Azure), ce blog est mon espace pour partager mes mémos techniques et retours d'expérience.