Anglais | 简体中文
PDF-Extract-Kit : boîte à outils d'extraction de PDF de haute qualité ???
? rejoignez-nous sur Discord et WeChat
31/10/2024 Sortie de la version 0.9.0. Il s'agit d'une nouvelle version majeure avec une refactorisation approfondie du code, résolvant de nombreux problèmes, améliorant les performances, réduisant les exigences matérielles et améliorant la convivialité :
Ajout du modèle doclayout_yolo
auto-développé, qui accélère le traitement de plus de 10 fois par rapport à la solution d'origine tout en conservant des effets d'analyse similaires, et peut être librement commuté avec layoutlmv3
via le fichier de configuration.
Analyse de formule améliorée vers unimernet 0.2.1
, améliorant la précision de l'analyse de formule tout en réduisant considérablement l'utilisation de la mémoire.
En raison du changement de référentiel pour PDF-Extract-Kit 1.0
, vous devez retélécharger le modèle. Veuillez vous référer à Comment télécharger des modèles pour les étapes détaillées.
Refactorisation du code du module de tri pour utiliser layoutreader pour le tri par ordre de lecture, garantissant une grande précision dans diverses mises en page.
Refonte du module de concaténation de paragraphes pour obtenir de bons résultats dans les scénarios entre colonnes, entre pages, entre figures et entre tableaux.
Refactorisation des fonctions de reconnaissance de liste et de table des matières, améliorant considérablement la précision des blocs de liste et des blocs de table des matières, ainsi que l'analyse des paragraphes de texte correspondants.
Refactorisation de la logique de correspondance pour les figures, les tableaux et le texte descriptif, améliorant considérablement la précision de la correspondance des légendes et des notes de bas de page avec les figures et les tableaux, et réduisant le taux de perte de texte descriptif à près de zéro.
Ajout de la prise en charge multilingue pour l'OCR, prenant en charge la détection et la reconnaissance de 84 langues. Pour la liste des langues prises en charge, consultez la liste des langues prises en charge par l'OCR.
Ajout d'une logique de recyclage de la mémoire et d'autres mesures d'optimisation de la mémoire, réduisant considérablement l'utilisation de la mémoire. La mémoire requise pour activer toutes les fonctionnalités d'accélération, à l'exception de l'accélération de table (mise en page/formule/OCR), a été réduite de 16 Go à 8 Go, et la mémoire requise pour activer toutes les fonctionnalités d'accélération a été réduite de 24 Go à 10 Go.
Commutateurs de fonctionnalités de fichier de configuration optimisés, ajoutant un commutateur de détection de formule indépendant pour améliorer considérablement la vitesse et les résultats d'analyse lorsque la détection de formule n'est pas nécessaire.
Kit d'extraction PDF intégré 1.0 :
2024/09/27 Sortie de la version 0.8.1, correction de quelques bugs et fourniture d'une version de déploiement localisée de la démo en ligne et de l'interface frontale.
09/09/2024 : sortie de la version 0.8.0, prenant en charge un déploiement rapide avec Dockerfile et lançant des démos sur Huggingface et Modelscope.
30/08/2024 : sortie de la version 0.7.1, ajout de l'option de reconnaissance de table paddle tablemaster
09/08/2024 : sortie de la version 0.7.0b1, processus d'installation simplifié, fonctionnalité de reconnaissance de table ajoutée
01/08/2024 : version 0.6.2b1 publiée, problèmes de conflits de dépendances optimisés et documentation d'installation
05/07/2024 : version open source initiale
MineurU
Ligne de commande
API
Déployer des projets dérivés
Guide de développement
Démo en ligne
Démo rapide du processeur
Utiliser le GPU
Présentation du projet
Principales fonctionnalités
Démarrage rapide
Usage
FAIRE
Problèmes connus
FAQ
Tout cela grâce à nos contributeurs
Informations sur la licence
Remerciements
Citation
Histoire des étoiles
Magic-doc
Magie-html
Links
MinerU est un outil qui convertit les PDF en formats lisibles par machine (par exemple, markdown, JSON), permettant une extraction facile dans n'importe quel format. MinerU est né pendant le processus de pré-formation d'InternLM. Nous nous concentrons sur la résolution des problèmes de conversion de symboles dans la littérature scientifique et espérons contribuer au développement technologique à l'ère des grands modèles. Comparé aux produits commerciaux bien connus, MinerU est encore jeune. Si vous rencontrez des problèmes ou si les résultats ne sont pas ceux attendus, veuillez soumettre un problème et joindre le PDF correspondant .
pdf_zh_cn.mp4
Supprimez les en-têtes, pieds de page, notes de bas de page, numéros de page, etc., pour garantir la cohérence sémantique.
Générez du texte dans un ordre lisible par l'homme, adapté aux mises en page à une seule colonne, à plusieurs colonnes et complexes.
Préserver la structure du document original, y compris les titres, paragraphes, listes, etc.
Extrayez des images, des descriptions d'images, des tableaux, des titres de tableaux et des notes de bas de page.
Reconnaissez et convertissez automatiquement les formules du document au format LaTeX.
Reconnaissez et convertissez automatiquement les tableaux du document au format LaTeX ou HTML.
Détectez automatiquement les PDF numérisés et les PDF tronqués et activez la fonctionnalité OCR.
OCR prend en charge la détection et la reconnaissance de 84 langues.
Prend en charge plusieurs formats de sortie, tels que multimodal et NLP Markdown, JSON trié par ordre de lecture et des formats intermédiaires riches.
Prend en charge divers résultats de visualisation, notamment la visualisation de la disposition et la visualisation des étendues, pour une confirmation efficace de la qualité de sortie.
Prend en charge les environnements CPU et GPU.
Compatible avec les plateformes Windows, Linux et Mac.
Si vous rencontrez des problèmes d'installation, veuillez d'abord consulter la FAQ.
Si les résultats de l'analyse ne correspondent pas à vos attentes, reportez-vous aux problèmes connus.
Il existe trois manières différentes de découvrir MinerU :
Démo en ligne (aucune installation requise)
Démo rapide du processeur (Windows, Linux, Mac)
Linux/Windows + CUDA
Pour garantir la stabilité et la fiabilité du projet, nous optimisons et testons uniquement des environnements matériels et logiciels spécifiques pendant le développement. Cela garantit que les utilisateurs déployant et exécutant le projet sur les configurations système recommandées obtiendront les meilleures performances avec le moins de problèmes de compatibilité.
En concentrant les ressources sur l'environnement principal, notre équipe peut résoudre plus efficacement les bogues potentiels et développer de nouvelles fonctionnalités.
Dans les environnements non principaux, en raison de la diversité des configurations matérielles et logicielles, ainsi que des problèmes de compatibilité des dépendances tierces, nous ne pouvons pas garantir une disponibilité à 100 % du projet. Par conséquent, pour les utilisateurs qui souhaitent utiliser ce projet dans des environnements non recommandés, nous suggérons de lire d'abord attentivement la documentation et la FAQ. La plupart des problèmes ont déjà des solutions correspondantes dans la FAQ. Nous encourageons également les commentaires de la communauté pour nous aider à étendre progressivement le support.
Système opérateur | |||||
Ubuntu 22.04 LTS | Windows 10/11 | macOS 11+ | |||
Processeur | x86_64 (ARM Linux non pris en charge) | x86_64 (Windows ARM non pris en charge) | x86_64 / bras64 | ||
Mémoire | 16 Go ou plus, recommandé 32 Go+ | ||||
Version Python | 3.10 (Veuillez vous assurer de créer un environnement virtuel Python 3.10 à l'aide de conda) | ||||
Version du pilote NVIDIA | dernier (pilote propriétaire) | dernier | Aucun | ||
Environnement CUDA | Installation automatique [12.1 (pytorch) + 11.8 (paddle)] | 11.8 (installation manuelle) + cuDNN v8.7.0 (installation manuelle) | Aucun | ||
Liste de support matériel GPU | Exigence minimale 8G+ VRAM | 3060ti/3070/4060 La VRAM 8G permet la mise en page, l'accélération de la reconnaissance de formules et l'accélération de l'OCR | Aucun | ||
Configuration recommandée 10G+ VRAM | 3080/3080ti/3090/3090ti/4070/4070ti/4070tisuper/4080/4090 10 Go de VRAM ou plus peuvent permettre simultanément la mise en page, la reconnaissance de formules, l'accélération OCR et la reconnaissance de tableaux. |
Version stable (version stable vérifiée par QA) :
Version de test (synchronisée avec les mises à jour de la branche de développement, test de nouvelles fonctionnalités) :
conda create -n MinerU python=3.10 conda activer MinerU pip install -U magic-pdf[complet] --extra-index-url https://wheels.myhloli.com
Reportez-vous à Comment télécharger des fichiers de modèle pour des instructions détaillées.
Après avoir terminé l'étape 2. Télécharger les fichiers de poids du modèle, le script générera automatiquement un fichier magic-pdf.json
dans le répertoire utilisateur et configurera le chemin du modèle par défaut. Vous pouvez trouver le fichier magic-pdf.json
dans votre 【répertoire utilisateur】.
Le répertoire utilisateur pour Windows est "C:Usersusername", pour Linux, il est "/home/username" et pour macOS, il est "/Users/username".
Vous pouvez modifier certaines configurations dans ce fichier pour activer ou désactiver des fonctionnalités, telles que la reconnaissance de table :
Si les éléments suivants ne sont pas présents dans le JSON, veuillez ajouter manuellement les éléments requis et supprimer le contenu du commentaire (le JSON standard ne prend pas en charge les commentaires).
{// other config"layout-config": {"model": "layoutlmv3" // Veuillez remplacer "doclayout_yolo" lorsque vous utilisez doclayout_yolo.},"formula-config": {"mfd_model": "yolo_v8_mfd","mfr_model " : "unimernet_small","enable": true // La fonction de reconnaissance de formule est activée par défaut. Si vous devez le désactiver, veuillez modifier la valeur ici par "false".},"table-config": {"model": "tablemaster", // Lorsque vous utilisez structEqTable, veuillez remplacer par "struct_eqtable"."enable" : false, // La fonctionnalité de reconnaissance de table est désactivée par défaut. Si vous devez l'activer, veuillez modifier la valeur ici par "true"."max_time": 400} }
Si votre appareil prend en charge CUDA et répond aux exigences GPU de l'environnement principal, vous pouvez utiliser l'accélération GPU. Veuillez sélectionner le guide approprié en fonction de votre système :
Ubuntu 22.04 LTS + GPU
Windows 10/11 + GPU
Déploiement rapide avec Docker
Docker nécessite un GPU avec au moins 16 Go de VRAM et toutes les fonctionnalités d'accélération sont activées par défaut.
Avant d'exécuter ce Docker, vous pouvez utiliser la commande suivante pour vérifier si votre appareil prend en charge l'accélération CUDA sur Docker.
docker run --rm --gpus=all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi
wget https://github.com/opendatalab/MinerU/raw/master/Dockerfile docker build -t mineru:dernier .docker run --rm -it --gpus=all mineru:dernier /bin/bash magie-pdf --aide
magie-pdf --aide Utilisation : magic-pdf [OPTIONS] Possibilités : -v, --version affiche la version et quitte -p, --path PATH chemin d'accès ou répertoire du fichier PDF local [obligatoire] -o, --output-dir PATH répertoire local de sortie [obligatoire] -m, --method [ocr|txt|auto] la méthode d'analyse du pdf. ocr : utiliser ocr technique pour extraire des informations d'un pdf. SMS: convient uniquement au PDF basé sur du texte et surpasser ocr. auto : choisit automatiquement le meilleure méthode pour analyser les pdf à partir d'ocr et de txt. sans méthode spécifiée, auto sera utilisé par défaut. -l, --lang TEXT Saisissez les langues du pdf (si connues) pour améliorer la précision de l'OCR. Facultatif. Tu devrais saisissez "Abréviation" avec l'URL du formulaire de langue : ht tps://paddlepaddle.github.io/PaddleOCR/latest/en /ppocr/blog/multi_langues.html#5-support-langues- et-abréviations -d, --debug BOOLÉEN Active des informations de débogage détaillées pendant l'exécution des commandes CLI. -s, --start INTEGER La page de démarrage de l'analyse PDF, commençant de 0. -e, --end INTEGER La page de fin de l'analyse PDF, à partir de 0. --help Afficher ce message et quitter.## show versionmagic-pdf -v## ligne de commande examplemagic-pdf -p {some_pdf} -o {some_output_dir} -m auto
{some_pdf}
peut être un seul fichier PDF ou un répertoire contenant plusieurs PDF. Les résultats seront enregistrés dans le répertoire {some_output_dir}
. La liste des fichiers de sortie est la suivante :
├── some_pdf.md # markdown file
├── images # directory for storing images
├── some_pdf_layout.pdf # layout diagram (Include layout reading order)
├── some_pdf_middle.json # MinerU intermediate processing result
├── some_pdf_model.json # model inference result
├── some_pdf_origin.pdf # original PDF file
├── some_pdf_spans.pdf # smallest granularity bbox position information diagram
└── some_pdf_content_list.json # Rich text JSON arranged in reading order
Pour plus d'informations sur les fichiers de sortie, veuillez vous référer à la description du fichier de sortie.
Traitement des fichiers à partir du disque local
image_writer = DiskReaderWriter(local_image_dir)image_dir = str(os.path.basename(local_image_dir))jso_useful_key = {"_pdf_type": "", "model_list": []}pipe = UNIPipe(pdf_bytes, jso_useful_key, image_writer)pipe.pipe_classify( )pipe.pipe_analyze()pipe.pipe_parse()md_content = pipe.pipe_mk_markdown(image_dir, drop_mode="none")
Traitement des fichiers à partir du stockage d'objets
s3pdf_cli = S3ReaderWriter(pdf_ak, pdf_sk, pdf_endpoint)image_dir = "s3://img_bucket/"s3image_cli = S3ReaderWriter(img_ak, img_sk, img_endpoint, parent_path=image_dir)pdf_bytes = s3pdf_cli.read(s3_pdf_path mode=s3pdf_cli.MODE_BIN)jso_useful _clé = {"_pdf_type": "", "model_list": []}pipe = UNIPipe(pdf_bytes, jso_useful_key, s3image_cli)pipe.pipe_classify()pipe.pipe_analyze()pipe.pipe_parse()md_content = pipe.pipe_mk_markdown(image_dir, drop_mode= "aucun")
Pour une mise en œuvre détaillée, reportez-vous à :
demo.py Méthode de traitement la plus simple
magic_pdf_parse_main.py Flux de travail de traitement plus détaillé
Les projets dérivés incluent des projets de développement secondaires basés sur MinerU par des développeurs de projets et des développeurs communautaires,
telles que des interfaces d'application basées sur Gradio, RAG basé sur Llama, des démos Web similaires au site officiel, des extrémités client/serveur légères d'équilibrage de charge multi-GPU, etc. Ces projets peuvent offrir plus de fonctionnalités et une meilleure expérience utilisateur.
Pour les méthodes de déploiement spécifiques, veuillez vous référer au fichier README du projet dérivé.
FAIRE
? Ordre de lecture basé sur le modèle
? Reconnaissance de index
et list
dans le texte principal
? Reconnaissance de tables
☐ Reconnaissance de blocs de code dans le texte principal
☐ Reconnaissance de formules chimiques
☐ Reconnaissance de formes géométriques
L'ordre de lecture est déterminé par le modèle en fonction de la répartition spatiale du contenu lisible et peut être désordonné dans certaines zones sous des mises en page extrêmement complexes.
Le texte vertical n'est pas pris en charge.
Les tables des matières et les listes sont reconnues via des règles, et certains formats de liste inhabituels peuvent ne pas être reconnus.
Un seul niveau de titres est pris en charge ; les titres hiérarchiques ne sont actuellement pas pris en charge.
Les blocs de code ne sont pas encore pris en charge dans le modèle de mise en page.
Les bandes dessinées, les albums d’art, les manuels scolaires primaires et les exercices ne peuvent pas être correctement analysés.
La reconnaissance des tableaux peut entraîner des erreurs de reconnaissance des lignes/colonnes dans les tableaux complexes.
La reconnaissance OCR peut produire des caractères inexacts dans les PDF de langues moins connues (par exemple, des signes diacritiques en écriture latine, des caractères faciles à confondre en écriture arabe).
Certaines formules peuvent ne pas s'afficher correctement dans Markdown.
FAQ en chinois
FAQ en anglais
LICENCE.md
Ce projet utilise actuellement PyMuPDF pour obtenir des fonctionnalités avancées. Cependant, comme il adhère à la licence AGPL, il peut imposer des restrictions sur certains scénarios d'utilisation. Dans les itérations futures, nous prévoyons de l'explorer et de le remplacer par une bibliothèque de traitement PDF plus permissive pour améliorer la convivialité et la flexibilité.
Kit d'extraction PDF
StructEqTable
PagaieOCR
PyMuPDF
lecteur de mise en page
détection de langue rapide
pdfminer.six
@misc{wang2024mineruopensourcesolutionprecise, title={MinerU : une solution open source pour une extraction précise du contenu des documents}, author={Bin Wang et Chao Xu et Xiaomeng Zhao et Linke Ouyang et Fan Wu et Zhiyuan Zhao et Rui Xu et Kaiwen Liu et Yuan Qu et Fukai Shang et Bo Zhang et Liqun Wei et Zhihao Sui et Wei Li et Botian Shi et Yu Qiao et Dahua Lin et Conghui He}, année={2024}, eprint={2409.18839}, archivePrefix={arXiv}, PrimaryClass={cs.CV}, url={https://arxiv.org/abs/2409.18839}, }@article{he2024opendatalab, title={Opendatalab : Renforcer l'intelligence artificielle générale avec des ensembles de données ouverts}, author={He, Conghui et Li, Wei et Jin, Zhenjiang et Xu, Chao et Wang, Bin et Lin, Dahua}, journal= {préimpression arXiv arXiv:2407.13773}, année={2024}}
Magic-Doc Outil d'extraction rapide ppt/pptx/doc/docx/pdf
Outil d'extraction de pages Web mixtes Magic-HTML
LabelU (un outil léger d'annotation de données multimodales)
LabelLLM (une plateforme d'annotation de dialogue LLM open source)
PDF-Extract-Kit (une boîte à outils complète pour l'extraction de contenu PDF de haute qualité)