英語 | 简体中文
PDF-Extract-Kit: 高品質の PDF 抽出ツールキット???
? Discord と WeChat で参加してください
2024/10/31 0.9.0 がリリースされました。これは、広範なコード リファクタリングを備えたメジャーな新バージョンであり、多数の問題に対処し、パフォーマンスを向上させ、ハードウェア要件を削減し、使いやすさを向上させています。
独自開発のdoclayout_yolo
モデルを追加しました。これは、元のソリューションと比較して、同様の解析効果を維持しながら処理を 10 倍以上高速化します。また、設定ファイルを介して、 layoutlmv3
と自由に切り替えることができます。
数式解析がunimernet 0.2.1
にアップグレードされ、メモリ使用量を大幅に削減しながら数式解析の精度が向上しました。
PDF-Extract-Kit 1.0
のリポジトリが変更されたため、モデルを再ダウンロードする必要があります。詳細な手順については、「モデルをダウンロードする方法」を参照してください。
読み取り順序の並べ替えにlayoutreaderを使用するように並べ替えモジュールのコードをリファクタリングし、さまざまなレイアウトで高精度を確保しました。
段落連結モジュールをリファクタリングして、列間、ページ間、図間、表間のシナリオで良好な結果が得られるようにしました。
リストと目次の認識機能がリファクタリングされ、リスト ブロックと目次ブロックの精度、および対応するテキスト段落の解析が大幅に向上しました。
図、表、および説明テキストのマッチング ロジックをリファクタリングし、キャプションおよび脚注と図および表のマッチングの精度を大幅に向上させ、説明テキストの損失率をほぼゼロに削減しました。
OCR の多言語サポートが追加され、84 言語の検出と認識がサポートされました。サポートされる言語のリストについては、「OCR 言語サポート リスト」を参照してください。
メモリリサイクルロジックとその他のメモリ最適化手段が追加され、メモリ使用量が大幅に削減されました。テーブル アクセラレーション (レイアウト/式/OCR) を除くすべてのアクセラレーション機能を有効にするためのメモリ要件は 16GB から 8GB に削減され、すべてのアクセラレーション機能を有効にするためのメモリ要件は 24GB から 10GB に削減されました。
構成ファイル機能スイッチが最適化され、独立した数式検出スイッチが追加され、数式検出が必要ない場合の速度と解析結果が大幅に向上しました。
統合された PDF-Extract-Kit 1.0:
2024/09/27 バージョン 0.8.1 がリリースされ、いくつかのバグが修正され、オンライン デモとフロントエンド インターフェイスのローカライズされた展開バージョンが提供されました。
2024/09/09: バージョン 0.8.0 がリリースされ、Dockerfile による高速デプロイメントがサポートされ、Huggingface と Modelscope でデモが開始されました。
2024/08/30: バージョン 0.7.1 リリース、パドル テーブルマスター テーブル認識オプションを追加
2024/08/09: バージョン 0.7.0b1 リリース、インストールプロセスの簡素化、テーブル認識機能の追加
2024/08/01: バージョン 0.6.2b1 がリリースされ、依存関係の競合の問題とインストール ドキュメントが最適化されました。
2024/07/05: 最初のオープンソース リリース
マイナーU
コマンドライン
API
派生プロジェクトのデプロイ
開発ガイド
オンラインデモ
クイック CPU デモ
GPUの使用
プロジェクト紹介
主な特長
クイックスタート
使用法
TODO
既知の問題
よくある質問
貢献者の皆様に感謝します
ライセンス情報
謝辞
引用
スターの歴史
マジックドクター
マジックHTML
リンク
MinerU は、PDF を機械可読形式 (マークダウン、JSON など) に変換し、任意の形式に簡単に抽出できるツールです。 MinerU は、InternLM の事前トレーニング プロセス中に誕生しました。私たちは科学文献における記号変換問題の解決に重点を置き、大型モデル時代の技術開発に貢献したいと考えています。有名な商用製品と比較すると、MinerU はまだ若いです。問題が発生した場合、または結果が期待どおりでない場合は、問題に関する問題を送信し、関連する PDF を添付してください。
pdf_zh_cn.mp4
ヘッダー、フッター、脚注、ページ番号などを削除して、意味上の一貫性を確保します。
人間が判読できる順序でテキストを出力し、単一列、複数列、および複雑なレイアウトに適しています。
見出し、段落、リストなど、元の文書の構造を維持します。
画像、画像の説明、表、表のタイトル、脚注を抽出します。
文書内の数式を自動的に認識し、LaTeX 形式に変換します。
文書内の表を自動的に認識し、LaTeX または HTML 形式に変換します。
スキャンされた PDF と文字化けした PDF を自動的に検出し、OCR 機能を有効にします。
OCR は 84 言語の検出と認識をサポートします。
マルチモーダルや NLP マークダウン、読み取り順序でソートされた JSON、豊富な中間形式などの複数の出力形式をサポートします。
レイアウト可視化やスパン可視化など、さまざまな可視化結果に対応し、効率的に出力品質を確認できます。
CPU環境とGPU環境の両方をサポートします。
Windows、Linux、Mac プラットフォームと互換性があります。
インストールの問題が発生した場合は、まず FAQ を参照してください。
解析結果が期待どおりにならない場合は、既知の問題を参照してください。
MinerU を体験するには 3 つの異なる方法があります。
オンラインデモ (インストール不要)
クイック CPU デモ (Windows、Linux、Mac)
Linux/Windows + CUDA
プロジェクトの安定性と信頼性を確保するために、開発中は特定のハードウェアおよびソフトウェア環境に対してのみ最適化およびテストを行います。これにより、推奨されるシステム構成でプロジェクトを展開および実行するユーザーは、互換性の問題を最小限に抑えながら最高のパフォーマンスを得ることができます。
リソースをメインライン環境に集中させることで、私たちのチームは潜在的なバグをより効率的に解決し、新機能を開発できます。
非メインライン環境では、ハードウェアおよびソフトウェア構成の多様性、およびサードパーティの依存関係の互換性の問題により、プロジェクトの 100% の可用性を保証することはできません。したがって、推奨されていない環境でこのプロジェクトを使用したいユーザーは、まずドキュメントと FAQ をよく読むことをお勧めします。ほとんどの問題には、FAQ に対応する解決策がすでに記載されています。また、サポートを段階的に拡大するために、コミュニティからのフィードバックも奨励しています。
オペレーティング·システム | |||||
Ubuntu 22.04 LTS | Windows 10 / 11 | macOS 11+ | |||
CPU | x86_64(サポートされていないARM Linux) | x86_64(サポートされていないARM Windows) | x86_64 / arm64 | ||
メモリ | 16GB以上、32GB以上推奨 | ||||
Pythonのバージョン | 3.10(必ず conda を使用して Python 3.10 仮想環境を作成してください) | ||||
Nvidiaドライバーのバージョン | 最新 (独自ドライバー) | 最新 | なし | ||
CUDA環境 | 自動インストール [12.1 (pytorch) + 11.8 (paddle)] | 11.8 (手動インストール) + cuDNN v8.7.0 (手動インストール) | なし | ||
GPU ハードウェア サポート リスト | 最小要件 8G+ VRAM | 3060ti/3070/4060 8G VRAM により、レイアウト、数式認識の高速化、OCR の高速化が可能 | なし | ||
推奨構成 10G+ VRAM | 3080/3080ti/3090/3090ti/4070/4070ti/4070tiスーパー/4080/4090 10G VRAM 以上により、レイアウト、数式認識、OCR 高速化、表認識高速化を同時に実現可能 |
安定版 (QA によって検証された安定版):
テスト バージョン (開発ブランチの更新と同期され、新機能をテストします):
conda create -n MinerU python=3.10 conda は MinerU をアクティブ化します pip install -U magic-pdf[full] --extra-index-url https://wheels.myhloli.com
詳細な手順については、「モデル ファイルをダウンロードする方法」を参照してください。
「2. モデル重みファイルのダウンロード」ステップを完了すると、スクリプトによってユーザー ディレクトリにmagic-pdf.json
ファイルが自動的に生成され、デフォルトのモデル パスが設定されます。 magic-pdf.json
ファイルは【ユーザーディレクトリ】にあります。
Windows のユーザー ディレクトリは「C:Usersusername」、Linux の場合は「/home/username」、macOS の場合は「/Users/username」です。
このファイル内の特定の構成を変更して、テーブル認識などの機能を有効または無効にすることができます。
JSON に次の項目が存在しない場合は、必要な項目を手動で追加し、コメント内容を削除してください (標準の JSON はコメントをサポートしていません)。
{// その他の設定"layout-config": {"model": "layoutlmv3" // doclayout_yolo を使用する場合は、"doclayout_yolo" に変更してください。},"formula-config": {"mfd_model": "yolo_v8_mfd","mfr_model ": "unimernet_small","enable": true // 数式認識機能はデフォルトで有効になっています。無効にする必要がある場合は、ここの値を「false」に変更してください。},"table-config": {"model": "tablemaster", // structEqTable を使用する場合は、「struct_eqtable」."enable" に変更してください。 : false, // テーブル認識機能はデフォルトでは無効になっています。有効にする必要がある場合は、ここの値を "true" に変更してください。"max_time": 400} }
デバイスが CUDA をサポートし、メインライン環境の GPU 要件を満たしている場合は、GPU アクセラレーションを使用できます。お使いのシステムに基づいて適切なガイドを選択してください。
Ubuntu 22.04 LTS + GPU
Windows 10/11 + GPU
Docker を使用した迅速なデプロイメント
Docker には少なくとも 16 GB の VRAM を備えた GPU が必要で、すべてのアクセラレーション機能がデフォルトで有効になっています。
この Docker を実行する前に、次のコマンドを使用して、デバイスが Docker 上で CUDA アクセラレーションをサポートしているかどうかを確認できます。
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:latest .docker run --rm -it --gpus=all Mineru:latest /bin/bash magic-pdf --ヘルプ
magic-pdf --ヘルプ 使用法: magic-pdf [オプション] オプション: -v、--version バージョンを表示して終了します -p, --path PATH ローカル PDF ファイルパスまたはディレクトリ [必須] -o, --output-dir PATH 出力ローカル ディレクトリ [必須] -m, --method [ocr|txt|auto] pdf を解析するメソッド。 ocr: ocrを使用する PDFから情報を抽出する技術。 TXT: テキストベースの PDF のみに適しており、 ocrを上回るパフォーマンス。 auto: 自動的に選択します ocr と txt から pdf を解析するための最良の方法。 メソッドが指定されていない場合、auto が使用されます。 デフォルト。 -l, --lang TEXT PDF 内の言語 (既知の場合) を入力します。 OCRの精度を向上させます。 オプション。あなたがすべき 言語フォーム URL: ht で「略語」を入力してください tps://paddlepaddle.github.io/PaddleOCR/latest/ja /ppocr/blog/multi_langages.html#5-サポート言語- および略語 -d, --debug BOOLEAN 実行中の詳細なデバッグ情報を有効にします。 CLI コマンドの実行。 -s, --start INTEGER PDF 解析の開始ページ、始まり 0から。 -e, --end INTEGER から始まる PDF 解析の終了ページ 0. --help このメッセージを表示して終了します。## show versionmagic-pdf -v## コマンド ライン examplemagic-pdf -p {some_pdf} -o {some_output_dir} -m auto
{some_pdf}
、単一の PDF ファイル、または複数の PDF を含むディレクトリにすることができます。結果は{some_output_dir}
ディレクトリに保存されます。出力ファイルのリストは次のとおりです。
├── 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
出力ファイルの詳細については、「出力ファイルの説明」を参照してください。
ローカルディスクからのファイルの処理
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")
オブジェクトストレージからのファイルの処理
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_キー = {"_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= "なし")
詳しい実装については、以下を参照してください。
demo.py 最も簡単な処理方法
magic_pdf_parse_main.py より詳細な処理ワークフロー
派生プロジェクトには、プロジェクト開発者やコミュニティ開発者による MinerU に基づく二次開発プロジェクトが含まれます。
Gradio ベースのアプリケーション インターフェイス、llama ベースの RAG、公式 Web サイトに似た Web デモ、軽量のマルチ GPU 負荷分散クライアント/サーバー エンドなど。これらのプロジェクトは、より多くの機能とより良いユーザー エクスペリエンスを提供する可能性があります。
具体的な展開方法については、派生プロジェクトの README を参照してください。
TODO
?モデルに基づく読み取り順序
?本文中のindex
とlist
の認識
?テーブル認識
☐ 本文中のコードブロック認識
☐ 化学式認識
☐ 幾何学的形状認識
読み取り順序は、読み取り可能なコンテンツの空間分布に基づいてモデルによって決定され、非常に複雑なレイアウトでは一部の領域で順序が狂う可能性があります。
縦書きテキストはサポートされていません。
目次とリストはルールによって認識されますが、一部の一般的ではないリスト形式は認識されない場合があります。
サポートされる見出しは 1 レベルだけです。階層見出しは現在サポートされていません。
コード ブロックはレイアウト モデルではまだサポートされていません。
漫画、アートアルバム、小学校の教科書、問題集はうまく解析できません。
複雑なテーブルでは、テーブル認識により行/列の認識エラーが発生する可能性があります。
OCR 認識では、あまり知られていない言語の PDF で不正確な文字が生成される場合があります (ラテン文字の発音区別符号、アラビア文字の混同されやすい文字など)。
一部の数式は Markdown で正しくレンダリングされない場合があります。
中国語のよくある質問
英語でのよくある質問
ライセンス.md
このプロジェクトは現在 PyMuPDF を使用して高度な機能を実現しています。ただし、AGPL ライセンスに準拠しているため、特定の使用シナリオに制限が課される場合があります。今後の反復では、使いやすさと柔軟性を強化するために、より寛容な PDF 処理ライブラリを探索し、置き換える予定です。
PDF 抽出キット
StructEqTable
パドルOCR
PyMuPDF
レイアウトリーダー
高速言語検出
pdfminer.6
@misc{wang2024mineruopensourcesolutionprecise, title={MinerU: 正確なドキュメント コンテンツ抽出のためのオープンソース ソリューション}, author={Bin Wang、Chao Xu、Xiaomeng Zhao、Linke Ouyang、Fan Wu、Zhiyuan Zhao、Rui Xu、Kaiwen Liu、Yuan Qu、Fukai Shang、Bo Zhang、Liqun Wei、Zhihao Sui、Wei Li、Botian Shi、Yu Qiao Dahua Lin と Conghui He}、year={2024}、eprint={2409.18839}、archivePrefix={arXiv}、primaryClass={cs.CV}、url={https://arxiv.org/abs/2409.18839}、 }@article{he2024opendatalab, title={Opendatalab: オープン データセットによる汎用人工知能の強化}、author={He、Conghui と Li、Wei と Jin、Zhenjiang と Xu、Chao と Wang、Bin と Lin、Dahua}、journal= {arXiv プレプリント arXiv:2407.13773}、年={2024}}
Magic-Doc 高速 ppt/pptx/doc/docx/pdf 抽出ツール
Magic-HTML 混合 Web ページ抽出ツール
LabelU (軽量のマルチモーダル データ アノテーション ツール)
LabelLLM (オープンソース LLM 対話注釈プラットフォーム)
PDF-Extract-Kit (高品質の PDF コンテンツ抽出のための包括的なツールキット)