Outils de pré-traitement open source pour des données non structurées
La bibliothèque unstructured fournit des composants open-source pour l'ingestion et le prétraitement des images et des documents texte, tels que les PDF, le HTML, les documents Word et bien d'autres. Les cas d'utilisation de unstructured tournent autour de la rationalisation et de l'optimisation du flux de travail de traitement des données pour les LLM. Les fonctions modulaires unstructured et les connecteurs forment un système cohérent qui simplifie l'ingestion et le prétraitement des données, ce qui le rend adaptable à différentes plates-formes et efficace pour transformer des données non structurées en sorties structurées.
Vous cherchez de meilleures performances de prétraitement et moins de configuration? Consultez notre nouvelle API sans serveur! L'API sans serveur non structurée est notre API la plus performante à ce jour, fournissant une solution plus réactive de qualité de production pour mieux répondre à vos besoins commerciaux et LLM. Dirigez-vous vers notre page d'inscription pour commencer gratuitement.
Il existe plusieurs façons d'utiliser la bibliothèque unstructured :
conda sur Windows System, veuillez vous référer à la documentation Les instructions suivantes sont destinées à vous aider à être opérationnel à l'aide de Docker pour interagir avec unstructured . Voir ici si vous n'avez pas déjà installé Docker sur votre machine.
Remarque: Nous créons des images multiplateformes pour prendre en charge le matériel X86_64 et Apple Silicon. docker pull devrait télécharger l'image correspondante pour votre architecture, mais vous pouvez spécifier avec --platform (par exemple --platform linux/amd64 ) si nécessaire.
Nous construisons des images Docker pour toutes les poussées vers main . Nous marquons chaque image avec le hachage de validation court correspondant (par exemple fbc7a69 ) et la version de l'application (par exemple 0.5.5-dev1 ). Nous marquons également l'image la plus récente avec latest . Pour tirer parti, docker pull de notre référentiel d'images.
docker pull downloads.unstructured.io/unstructured-io/unstructured:latestUne fois tiré, vous pouvez créer un conteneur à partir de cette image et de cette coque.
# create the container
docker run -dt --name unstructured downloads.unstructured.io/unstructured-io/unstructured:latest
# this will drop you into a bash shell where the Docker image is running
docker exec -it unstructured bash Vous pouvez également créer votre propre image Docker. Notez que l'image de base est wolfi-base , qui est mise à jour régulièrement. Si vous construisez l'image localement, il est possible que docker-build échoue en raison des changements en amont dans wolfi-base .
Si vous prévoyez d'analyser un seul type de données, vous pouvez accélérer la construction de l'image en commentant certains des packages / exigences nécessaires pour d'autres types de données. Voir dockerfile pour savoir quelles lignes sont nécessaires pour votre cas d'utilisation.
make docker-build
# this will drop you into a bash shell where the Docker image is running
make docker-start-bashUne fois dans le conteneur en cours d'exécution, vous pouvez essayer les choses directement dans le mode interactif de l'interprète Python.
# this will drop you into a python console so you can run the below partition functions
python3
>>> from unstructured.partition.pdf import partition_pdf
>>> elements = partition_pdf(filename= " example-docs/layout-parser-paper-fast.pdf " )
>>> from unstructured.partition.text import partition_text
>>> elements = partition_text(filename= " example-docs/fake-text.txt " ) Utilisez les instructions suivantes pour être opérationnel avec unstructured et tester votre installation.
Installez le SDK Python pour prendre en charge tous les types de documents avec pip install "unstructured[all-docs]"
pip install unstructuredpip install "unstructured[docx,pptx]"Installez les dépendances du système suivantes si elles ne sont pas déjà disponibles sur votre système. Selon les types de documents que vous analysez, vous n'avez peut-être pas besoin de tout cela.
libmagic-dev (détection de gymnologie)poppler-utils (images et pdfs)tesseract-ocr (Images et PDFS, installez tesseract-lang pour un support linguistique supplémentaire)libreoffice (MS Office Docs)pandoc (Epubs, RTFS et Open Office Docs). Veuillez noter que pour gérer les fichiers RTF, vous avez besoin de la version 2.14.2 ou plus récente. L'exécution make install-pandoc ou ./scripts/install-pandoc.sh installera la version correcte pour vous.Pour des suggestions sur la façon d'installer sur les fenêtres et pour en savoir plus sur les dépendances pour d'autres fonctionnalités, consultez la documentation d'installation ici.
À ce stade, vous devriez pouvoir exécuter le code suivant:
from unstructured . partition . auto import partition
elements = partition ( filename = "example-docs/eml/fake-email.eml" )
print ( " n n " . join ([ str ( el ) for el in elements ])) Les instructions suivantes sont destinées à vous aider à être opérationnel avec unstructured localement si vous prévoyez de contribuer au projet.
L'utilisation pyenv pour gérer les virtualvv est recommandée mais pas nécessaire
brew install pyenv-virtualenvpyenv install 3.10 Créez un VirtualEnv pour travailler et activez-le, par exemple pour un nommé unstructured :
pyenv virtualenv 3.10 unstructured
pyenv activate unstructured
Exécuter make install
Facultatif:
make install-local-inference .tesseract est requis. Voir ici pour les instructions d'installation.tesseract et poppler sont nécessaires. Les documents PDF2Image ont des instructions sur l'installation poppler sur diverses plates-formes. De plus, si vous prévoyez de contribuer à unstructured , nous vous fournissons un fichier de configuration pre-commit facultatif pour vous assurer que votre code correspond aux normes de mise en forme et de liaison utilisées dans unstructured . Si vous préférez ne pas avoir de modifications de code auto-tirées avant chaque engagement, vous pouvez utiliser make check pour voir si des modifications de liaison ou de formatage devraient être appliquées et make tidy pour les appliquer.
Si vous utilisez le pre-commit en option, vous aurez juste besoin d'installer les crochets avec pre-commit install car le package pre-commit est installé dans le cadre de make install mentionné ci-dessus. Enfin, si vous décidez d'utiliser pre-commit vous pouvez également désinstaller les crochets avec pre-commit uninstall .
En plus de développer dans votre système d'exploitation local, nous fournissons également une aide pour utiliser Docker fournissant un environnement de développement:
make docker-start-dev Cela démarre un conteneur Docker avec votre référentiel local monté sur /mnt/local_unstructured . Cette image Docker vous permet de vous développer sans vous soucier de la compatibilité de votre système d'exploitation avec le dépôt et ses dépendances.
Pour une documentation plus complète, visitez https://docs.unstructured.io. Vous pouvez également en savoir plus sur nos autres produits sur la page de documentation, y compris notre API SaaS.
Voici quelques pages de la page de documentation open source qui sont utiles pour les nouveaux utilisateurs:
unstructured Les exemples suivants montrent comment démarrer avec la bibliothèque unstructured . Le moyen le plus simple d'analyser un document non structuré est d'utiliser la fonction partition . Si vous utilisez la fonction partition , unstructured détectera le type de fichier et le réalisera vers la fonction de partitionnement spécifique au fichier approprié. Si vous utilisez la fonction partition , vous devrez peut-être installer des dépendances supplémentaires par type DOC. Par exemple, pour installer des dépendances DOCX, vous devez exécuter pip install "unstructured[docx]" . Voir notre guide d'installation pour plus de détails.
from unstructured . partition . auto import partition
elements = partition ( "example-docs/layout-parser-paper.pdf" ) Exécutez print("nn".join([str(el) for el in elements])) pour obtenir une représentation de chaîne de la sortie, qui ressemble:
LayoutParser : A Unified Toolkit for Deep Learning Based Document Image Analysis
Zejiang Shen 1 ( (cid:0) ), Ruochen Zhang 2 , Melissa Dell 3 , Benjamin Charles Germain Lee 4 , Jacob Carlson 3 , and
Weining Li 5
Abstract. Recent advances in document image analysis (DIA) have been primarily driven by the application of neural
networks. Ideally, research outcomes could be easily deployed in production and extended for further investigation.
However, various factors like loosely organized codebases and sophisticated model configurations complicate the easy
reuse of important innovations by a wide audience. Though there have been ongoing efforts to improve reusability and
simplify deep learning (DL) model development in disciplines like natural language processing and computer vision, none
of them are optimized for challenges in the domain of DIA. This represents a major gap in the existing toolkit, as DIA
is central to academic research across a wide range of disciplines in the social sciences and humanities. This paper
introduces LayoutParser, an open-source library for streamlining the usage of DL in DIA research and applications.
The core LayoutParser library comes with a set of simple and intuitive interfaces for applying and customizing DL models
for layout detection, character recognition, and many other document processing tasks. To promote extensibility,
LayoutParser also incorporates a community platform for sharing both pre-trained models and full document digitization
pipelines. We demonstrate that LayoutParser is helpful for both lightweight and large-scale digitization pipelines in
real-word use cases. The library is publicly available at https://layout-parser.github.io
Keywords: Document Image Analysis · Deep Learning · Layout Analysis · Character Recognition · Open Source library ·
Toolkit.
Introduction
Deep Learning(DL)-based approaches are the state-of-the-art for a wide range of document image analysis (DIA) tasks
including document image classification [11,
Voir la section de partitionnement dans notre documentation pour une liste complète des options et des instructions sur la façon d'utiliser des fonctions de partitionnement spécifiques au fichier.
Voir notre politique de sécurité pour obtenir des informations sur la façon de signaler les vulnérabilités de sécurité.
Rencontré un bug? Veuillez créer un nouveau problème GitHub et utiliser notre modèle de rapport de bogue pour décrire le problème. Pour nous aider à diagnostiquer le problème, utilisez la commande python scripts/collect_env.py pour collecter les informations d'environnement de votre système et les inclure dans votre rapport. Votre aide nous aide à améliorer continuellement notre logiciel - merci!
| Section | Description |
|---|---|
| Site Web de l'entreprise | Non structuré.io Informations sur les produits et l'entreprise |
| Documentation | Documentation complète de l'API |
| Traitement par lots | Ingérer des lots de documents par le biais de |
Nous nous sommes associés à Scarf (https://scarf.sh) pour collecter des statistiques utilisateur anonymisées pour comprendre les fonctionnalités que notre communauté utilise et comment hiérarchiser la prise de décision du produit à l'avenir. Pour en savoir plus sur la façon dont nous collectons et utilisons ces données, veuillez lire notre politique de confidentialité. Pour vous retirer de cette collection de données, vous pouvez définir la variable d'environnement SCARF_NO_ANALYTICS=true avant d'exécuter des commandes unstructured .