mcpField
L
liteparse

liteparse

github.com/kalarislabsドキュメント7346 回インストール4 日前に更新
リポジトリ

liteparse について

liteparseは、PDFや変換後のOffice・画像ファイルを扱うローカル文書解析スキルです。クラウドLLMを呼び出さず、レイアウトを保ったテキストやJSONの抽出、OCR、ページ画像、バッチ処理を案内します。

主な機能

  1. 01レイアウトを保ったテキスト抽出
  2. 02バウンディングボックス付きJSON出力
  3. 03スキャン文書・画像のOCR
  4. 04ページ画像の生成
  5. 05ページ指定とバッチ解析

活用シーン

  1. 01座標情報を使うレイアウト対応RAGの構築
  2. 02スキャンPDFからのローカルなテキスト抽出
  3. 03マルチモーダルエージェント向け図表の取得
  4. 04文書コレクションの一括取り込み

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/kalarislabs/research-agent-skills --skill liteparse

インストール後、Claude Code で/liteparseを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
api_reference.md
choosing_a_parser.md
cli_reference.md
ocr_and_formats.md
output_formats.md
scripts/
batch_parse_dir.py

詳細

LiteParse — ローカル文書解析

概要

LiteParse は、高速なオープンソースの文書パーサー(Rust コア、Python/Node バインディング)です。境界ボックス付きのローカルでのレイアウト認識テキスト抽出に特化しています。Markdown は生成せず、クラウド LLM も呼び出しません。出力は、レイアウトを保持したプレーンテキスト、またはページごとの text_items(位置、フォントメタデータ、オプションの信頼度を含む)を持つ構造化 JSONです。

バージョンに関する注記: 例は liteparse 2.0.0(PyPI、2026 年 5 月)を対象としています。上流の V1 ブランチはレガシーです。このスキルでは V2 / main のみを説明します。

MarkItDown、pdf スキル、LlamaParse と比較したパーサーの選択については、references/choosing_a_parser.md を参照してください。

このスキルを使用する場面

次のような場合は LiteParse を使用してください。

  • クラウド依存なしで、PDF や変換済みの Office/画像ファイルを高速にローカル解析する
  • レイアウト認識 RAG、引用箇所の特定、図表領域の処理に使う、境界ボックス付きの空間情報を含むテキストが必要
  • スキャンした PDF や画像に対する OCR が必要(同梱の Tesseract、またはユーザーが実行する HTTP OCR サーバー)
  • グラフ、図、手書き文字を確認する必要があるマルチモーダルエージェント向けに、ページのスクリーンショット(PNG)が必要
  • 文献フォルダー、補足資料の PDF、プロトコルライブラリを一括取り込みする
  • ページの一部、またはパスワード保護された PDF を処理する

使用しない場面

タスク代わりに使用
LLM への取り込み用 Markdown(EPUB、音声、YouTube、HTML)markitdown スキル
PDF の結合/分割、フォーム、透かし、回転pdf スキル
複雑な表、手書き文字、本番環境向けクラウドパイプラインLlamaParse(クラウド。別途登録が必要です)

インストール

uv pip install "liteparse==2.0.0"

Python バインディングと lit CLI がインストールされます。動作を確認します。

lit --help
python -c "import liteparse; print(liteparse.__version__)"

オプションのシステムツール(PDF 以外の入力用):

  • LibreOffice — Word、Excel、PowerPoint、OpenDocument、CSV/TSV
  • ImageMagick — PNG、JPEG、TIFF、WebP、SVG など

インストールコマンドは references/ocr_and_formats.md に記載されています。

Node.js/TypeScript(オプション):npm i @llamaindex/liteparse — references/api_reference.md を参照してください。


クイックスタート

Python
from liteparse import LiteParse

parser = LiteParse(quiet=True)
result = parser.parse("paper.pdf")
print(result.text)

for page in result.pages:
    print(f"Page {page.page_num}: {len(page.text_items)} items")
CLI
# Layout-preserved text (default)
lit parse paper.pdf

# Structured JSON with bounding boxes
lit parse paper.pdf --format json -o paper.json

# Disable OCR on text-native PDFs (faster)
lit parse paper.pdf --no-ocr

主なワークフロー

1. レイアウトを保持したテキストに解析する

文書全体のテキストをすばやく取得する場合や、座標を必要としないチャンク分割器に渡す場合に最適です。

parser = LiteParse(ocr_enabled=True, quiet=True)
result = parser.parse("document.pdf")
full_text = result.text
lit parse document.pdf -o output.txt
2. 構造化 JSON に解析する(境界ボックス)

レイアウト認識 RAG の構築、元文書の領域のハイライト表示、テキストとスクリーンショットの結合に使用します。

import json
from liteparse import LiteParse

parser = LiteParse(output_format="json", quiet=True)
result = parser.parse("document.pdf")

# Programmatic access
for page in result.pages:
    for item in page.text_items:
        bbox = (item.x, item.y, item.width, item.height)
        # item.text, item.confidence, item.font_name, item.font_size
lit parse document.pdf --format json -o document.json

JSON フィールドの構成:references/output_formats.md。

3. 特定のページを解析する
parser = LiteParse(target_pages="1-5,10,15-20", quiet=True)
result = parser.parse("long_paper.pdf")
lit parse long_paper.pdf --target-pages "1-5,10"
4. バイト列または標準入力から解析する

アップロード、S3 からのダウンロード、リモート PDF のパイプ処理に便利です。

with open("document.pdf", "rb") as f:
    result = parser.parse(f.read())
curl -sL https://example.com/report.pdf | lit parse -
5. マルチモーダルエージェント向けのページスクリーンショット

スクリーンショットは、テキスト抽出だけでは取得できない視覚情報(図、複雑な表、手書き文字)を捉えます。

from pathlib import Path

parser = LiteParse(dpi=150, quiet=True)
shots = parser.screenshot("document.pdf", page_numbers=[1, 2, 3])
out = Path("screenshots")
out.mkdir(exist_ok=True)
for s in shots:
    (out / f"page_{s.page_num}.png").write_bytes(s.image_bytes)
lit screenshot document.pdf --target-pages "1,3,5" -o ./screenshots
lit screenshot document.pdf --dpi 300 -o ./screenshots

エージェントが同じページの座標とピクセル情報の両方を必要とする場合は、JSON 解析とスクリーンショットを組み合わせてください。

6. ディレクトリを一括解析する

大規模なコーパスでは、CLI(並列 OCR ワーカーを使用)または同梱のスクリプトを使用してください。

lit batch-parse ./papers ./parsed --format json --recursive
lit batch-parse ./papers ./parsed --extension .pdf --no-ocr
python scripts/batch_parse_dir.py ./papers ./parsed --format json --recursive

ネットワーク呼び出しを行わない Python の一括処理ラッパーについては、scripts/batch_parse_dir.py を参照してください。

7. OCR の設定

OCR はデフォルトで有効です。Tesseract が同梱されているため、基本的な英語 OCR に追加のインストールは不要です。

parser = LiteParse(
    ocr_enabled=True,
    ocr_language="eng",       # Tesseract codes: fra, deu, etc.
    num_workers=4,            # parallel OCR (default: CPU cores - 1)
    dpi=150,                  # higher DPI → better OCR, slower
)
lit parse scan.pdf --ocr-language fra
lit parse scan.pdf --no-ocr
lit parse scan.pdf --ocr-server-url http://localhost:8080/ocr

オフライン/エアギャップ環境: .traineddata ファイルのあるディレクトリを TESSDATA_PREFIX に設定するか、--tessdata-path を渡してください。詳細は references/ocr_and_formats.md を参照してください。

8. 暗号化された PDF
parser = LiteParse(password="secret", quiet=True)
result = parser.parse("protected.pdf")
lit parse protected.pdf --password secret
9. フレーズでテキスト項目を検索する

隣接する項目を結合し、フレーズ(セクションタイトルなど)の統合された境界ボックスを返します。

from liteparse import search_items

page = result.get_page(1)
matches = search_items(page.text_items, "Materials and Methods", case_sensitive=False)

マルチフォーマット入力

カテゴリ拡張子(例)必要なツール
PDF.pdfネイティブ
Office.docx、.xlsx、.pptx、.doc、.odt、…LibreOffice
画像.png、.jpg、.tiff、.webp、.svg、…ImageMagick

ファイルは内部で PDF に変換された後、解析されます。変換ツールが見つからない場合、実行可能な対処方法を示すエラーが発生して解析に失敗します。依存関係をインストールしてから再試行してください。


パフォーマンスのヒント

  • デジタル生成 PDF では --no-ocr を指定します。最も大きな速度向上が得られます。
  • target_pages — メソッドや補足セクションのみを解析します
  • num_workers — CPU コア全体で OCR をスケールします
  • max_pages — 非常に大きなファイルのページ数を制限します(デフォルトは 1000)
  • lit batch-parse — --recursive と --extension を指定してディレクトリ単位でジョブを実行します
  • OCR の品質がすでに十分な場合は、dpi を下げます(例:100)

参照ファイル

ファイル読むタイミング
references/choosing_a_parser.mdLiteParse、MarkItDown、pdf、LlamaParse のどれを使うべきか不明な場合
references/api_reference.mdPython/TypeScript API、型、search_items を確認する場合
references/cli_reference.mdlit コマンドのすべてのフラグを確認する場合
references/output_formats.mdJSON スキーマ、バウンディングボックス、信頼度スコアを確認する場合
references/ocr_and_formats.mdTesseract、HTTP OCR、LibreOffice、ImageMagick を確認する場合

トラブルシューティング

問題対処方法
Office ファイルの処理に失敗するLibreOffice をインストールし、soffice が PATH 上にあることを確認します(Windows:LibreOffice の program ディレクトリを追加します)
画像の処理に失敗するImageMagick をインストールし、convert または magick が動作することを確認します
OCR の品質が低い--dpi を上げる、--ocr-language を試す、または HTTP OCR サーバーを使用します
OCR が遅い不要な場合は --no-ocr を指定し、ページ数を減らすか、num_workers を増やします
エアギャップ環境での OCRexport TESSDATA_PREFIX=/path/to/tessdata または --tessdata-path を指定します
バイト列で ParseError が発生する入力が有効な PDF バイト列であることを確認します(Office のバイト列はファイルパスと変換が必要です)

リソース

エージェントの作業手順

  1. 環境を確認します。 調査の問い、データベース、対象期間、採用基準を確認します。
  2. 入力を明確にします。 データまたはユーザーから、形式、識別子、パラメーターを確認します。結果に影響する値は推測せず、質問してください。
  3. まず小規模に実行します。 1つのデータベースで範囲を絞ったクエリを実行し、結果が関連しているか確認します。
  4. 上記の手順と参照情報を使って、タスク全体を実行します。
  5. 結果を検証します。 各参考文献が、解決可能な識別子を持つ実在のレコードから取得されていることを確認します。件数と検索文字列を記録します。
  6. 報告します。 実行した内容(バージョン、コマンド、パラメーター)、確認した内容、未解決の点を示します。
このような場合対応
API によるレート制限、またはエラーが発生した場合間隔を空けて再試行する、バッチサイズを小さくする、またはデータベースを切り替え、欠落した内容を報告します。
手順に記載されている関数、フラグ、エンドポイントがインストール済みのバージョンにない場合インストール済みバージョンのドキュメント(help()、--help、公式ドキュメント)を確認して対応を調整し、ユーザーに伝えます。API を決して捏造しないでください。
必須の入力、識別子、またはパラメーターが曖昧な場合ユーザーに質問するか、実行前に前提を明示します。

誠実性に関するルール

  • 結果、パラメーター、識別子、引用、統計を決して捏造しないでください。実行または検証できないことがあれば、明確に伝えます。
  • 取得していない論文を要約したり、記憶を頼りに引用したりしないでください。
  • ここに記載されているバージョン固有の情報は古くなっている可能性があるものとして扱い、インストール済みバージョンの公式ドキュメントで確認します。
  • 費用が発生する、共有 GPU やクラウドのクォータを消費する、個人データや患者データを扱う、または取り消せない操作を行う場合は、事前に確認してください。

関連するスキル

  • markitdown:Microsoft MarkItDown(Python API、markitdown CLI、markitdown-ocr プラグイン、markitdown-mcp サーバー)を使ってドキュメントを Markdown に変換します。対象は…
  • llamaindex:RAG を利用する LLM アプリケーションを構築するためのデータフレームワークです。
  • open-notebook:AI を活用した調査とドキュメント分析のための、Google NotebookLM に代わるセルフホスト可能なオープンソースの選択肢です。

コメント