🚀 Nanonets-OCR-s GGUFモデル
Nanonets-OCR-sは、最先端の画像からMarkdownへのOCRモデルです。従来のテキスト抽出を超え、ドキュメントを構造化されたMarkdownに変換します。これにより、大規模言語モデル(LLM)による下流処理に最適な形式になります。
🚀 クイックスタート
Nanonets-OCR-sを使用するには、以下の方法があります。
1. transformersを使用する場合
from PIL import Image
from transformers import AutoTokenizer, AutoProcessor, AutoModelForImageTextToText
model_path = "nanonets/Nanonets-OCR-s"
model = AutoModelForImageTextToText.from_pretrained(
model_path,
torch_dtype="auto",
device_map="auto",
attn_implementation="flash_attention_2"
)
model.eval()
tokenizer = AutoTokenizer.from_pretrained(model_path)
processor = AutoProcessor.from_pretrained(model_path)
def ocr_page_with_nanonets_s(image_path, model, processor, max_new_tokens=4096):
prompt = """Extract the text from the above document as if you were reading it naturally. Return the tables in html format. Return the equations in LaTeX representation. If there is an image in the document and image caption is not present, add a small description of the image inside the <img></img> tag; otherwise, add the image caption inside <img></img>. Watermarks should be wrapped in brackets. Ex: <watermark>OFFICIAL COPY</watermark>. Page numbers should be wrapped in brackets. Ex: <page_number>14</page_number> or <page_number>9/22</page_number>. Prefer using ☐ and ☑ for check boxes."""
image = Image.open(image_path)
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": [
{"type": "image", "image": f"file://{image_path}"},
{"type": "text", "text": prompt},
]},
]
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(text=[text], images=[image], padding=True, return_tensors="pt")
inputs = inputs.to(model.device)
output_ids = model.generate(**inputs, max_new_tokens=max_new_tokens, do_sample=False)
generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(inputs.input_ids, output_ids)]
output_text = processor.batch_decode(generated_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True)
return output_text[0]
image_path = "/path/to/your/document.jpg"
result = ocr_page_with_nanonets_s(image_path, model, processor, max_new_tokens=15000)
print(result)
2. vLLMを使用する場合
- vLLMサーバーを起動します。
vllm serve nanonets/Nanonets-OCR-s
- モデルで予測を行います。
from openai import OpenAI
import base64
client = OpenAI(api_key="123", base_url="http://localhost:8000/v1")
model = "nanonets/Nanonets-OCR-s"
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
def ocr_page_with_nanonets_s(img_base64):
response = client.chat.completions.create(
model=model,
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {"url": f"data:image/png;base64,{img_base64}"},
},
{
"type": "text",
"text": "Extract the text from the above document as if you were reading it naturally. Return the tables in html format. Return the equations in LaTeX representation. If there is an image in the document and image caption is not present, add a small description of the image inside the <img></img> tag; otherwise, add the image caption inside <img></img>. Watermarks should be wrapped in brackets. Ex: <watermark>OFFICIAL COPY</watermark>. Page numbers should be wrapped in brackets. Ex: <page_number>14</page_number> or <page_number>9/22</page_number>. Prefer using ☐ and ☑ for check boxes.",
},
],
}
],
temperature=0.0,
max_tokens=15000
)
return response.choices[0].message.content
test_img_path = "/path/to/your/document.jpg"
img_base64 = encode_image(test_img_path)
print(ocr_page_with_nanonets_s(img_base64))
3. docextを使用する場合
pip install docext
python -m docext.app.app --model_name hosted_vllm/nanonets/Nanonets-OCR-s
詳細はGitHubを参照してください。
✨ 主な機能
Nanonets-OCR-sは、複雑なドキュメントを簡単に処理するための機能が豊富です。
- LaTeX方程式認識:数学方程式や公式を自動的に適切な形式のLaTeX構文に変換します。インライン (
$...$
) とディスプレイ ($$...$$
) の方程式を区別します。
- インテリジェント画像説明:ドキュメント内の画像を構造化された
<img>
タグを使用して説明し、大規模言語モデル(LLM)による処理に適した形式にします。ロゴ、チャート、グラフなどのさまざまな画像タイプを説明し、その内容、スタイル、コンテキストを詳述します。
- 署名検出と分離:署名を他のテキストから識別して分離し、
<signature>
タグ内に出力します。これは、法的およびビジネスドキュメントの処理に重要です。
- 透かし抽出:ドキュメントから透かしテキストを検出して抽出し、
<watermark>
タグ内に配置します。
- スマートチェックボックス処理:フォームのチェックボックスとラジオボタンを標準化されたUnicode記号 (
☐
, ☑
, ☒
) に変換し、一貫した信頼性の高い処理を実現します。
- 複雑なテーブル抽出:ドキュメントから複雑なテーブルを正確に抽出し、MarkdownとHTMLの両方のテーブル形式に変換します。
📚 ドキュメント
モデル生成詳細
このモデルは、llama.cpp のコミット bf9087f5
を使用して生成されました。
量子化に関する実験
私は、デフォルトのIMatrix構成が提供する以上の精度で重要なレイヤーの精度を選択的に向上させる新しい量子化アプローチを実験しています。
私のテストでは、標準のIMatrix量子化は、特にエキスパート混合(MoE)モデルで、低いビット深度で性能が低下します。これを解決するために、llama.cpp
の --tensor-type
オプションを使用して、重要なレイヤーを手動でより高い精度に「引き上げ」ています。実装はこちらで確認できます。
👉 llama.cppを使用したレイヤーの引き上げ
これによりモデルファイルのサイズは増加しますが、特定の量子化レベルでの精度が大幅に向上します。
適切なGGUFモデル形式の選択に関する情報
こちらをクリック して、適切なGGUFモデル形式の選択に関する情報を取得してください。
🔧 技術詳細
BibTex
@misc{Nanonets-OCR-S,
title={Nanonets-OCR-S: A model for transforming documents into structured markdown with intelligent content recognition and semantic tagging},
author={Souvik Mandal and Ashish Talewar and Paras Ahuja and Prathamesh Juvatkar},
year={2025},
}
📄 ライセンス
このモデルの作成と量子ネットワークモニタープロジェクトの背後にあるすべてのコードはオープンソースです。自由に利用してください。
🚀 モデルが役立つ場合
私の AI搭載量子ネットワークモニターアシスタント の 量子対応セキュリティチェック をテストしてください。
👉 量子ネットワークモニター
量子ネットワークモニターサービスの完全なオープンソースコードは、私のGitHubリポジトリ(名前にNetworkMonitorが含まれるリポジトリ)で入手できます。量子ネットワークモニターのソースコード。独自で量子化を行いたい場合は、モデルを量子化するために使用するコードも見つけることができます。GGUFModelBuilder
テスト方法
AIアシスタントタイプ を選択します。
TurboLLM
(GPT-4.1-mini)
HugLLM
(Hugginfaceオープンソースモデル)
TestLLM
(実験的なCPU専用)
テスト内容
私は、AIネットワークモニタリングのための 小規模オープンソースモデル の限界を追求しています。具体的には、
- ライブネットワークサービスに対する 関数呼び出し
- 以下の処理を行いながらモデルをどれだけ小さくできるか
- 自動化された Nmapセキュリティスキャン
- 量子対応チェック
- ネットワークモニタリングタスク
各アシスタントの特徴
- 🟡 TestLLM – 現在の実験的モデル(huggingfaceのDockerスペースで2つのCPUスレッドでllama.cppを使用)
- ✅ ゼロコンフィギュレーションセットアップ
- ⏳ 30秒のロード時間(推論は遅いが APIコストはかからない)。コストが低いためトークン制限はありません。
- 🔧 協力者募集中! エッジデバイスAI に興味がある方は、一緒に協力しましょう!
- 🟢 TurboLLM – gpt-4.1-mini を使用
- 非常に良好な性能を発揮しますが、残念ながらOpenAIはトークンごとに料金を請求します。そのため、トークンの使用量は制限されています。
- 量子ネットワークモニターエージェントで.netコードを実行するカスタムコマンドプロセッサを作成します。
- リアルタイムのネットワーク診断とモニタリング
- セキュリティ監査
- 侵入テスト (Nmap/Metasploit)
- 🔵 HugLLM – 最新のオープンソースモデル
- 🌐 Hugging Face推論APIで実行されます。Novitaにホストされている最新のモデルを使用して非常に良好な性能を発揮します。
テストできるコマンドの例
"Give me info on my websites SSL certificate"
"Check if my server is using quantum safe encyption for communication"
"Run a comprehensive security audit on my server"
- '"Create a cmd processor to .. (what ever you want)" 注: 量子ネットワークモニターエージェント をインストールする必要があります。これは非常に柔軟で強力な機能です。注意して使用してください!
最後に
私は、これらのモデルファイルを作成するために使用するサーバー、量子ネットワークモニターサービスを実行するためのサーバー、およびNovitaとOpenAIからの推論の費用をすべて自前で負担しています。モデル作成と量子ネットワークモニタープロジェクトの背後にあるすべてのコードはオープンソースです。役に立つものを自由に利用してください。
もしあなたがこの仕事を評価してくれるなら、私にコーヒーを買ってくれる ことをご検討ください。あなたの支援はサービスコストを賄い、すべての人のトークン制限を引き上げるのに役立ちます。
私はまた、仕事の機会やスポンサーシップも歓迎しています。
ありがとうございます!😊