🚀 TFT-ID: 学術論文用の表/図/テキスト識別器
TFT-ID(Table/Figure/Text IDentifier)は、学術論文内の表、図、およびテキストセクションを抽出するために微調整された物体検出モデルです。このモデルはYifei Huによって作成されました。

TFT-IDは、microsoft/Florence-2のチェックポイントから微調整されています。
- このモデルは、Hugging Face Daily Papersの論文を使用して微調整されました。すべての36,000以上のバウンディングボックスは、Yifei Huによって手動で注釈付けされ、チェックされています。
- TFT-IDモデルは、単一の論文ページの画像を入力として受け取り、指定されたページ内のすべての表、図、およびテキストセクションのバウンディングボックスを返します。
- テキストセクションには、下流のOCRワークフローに最適なクリーンなテキストコンテンツが含まれています。テキストセクションをクリーンなマークダウンと数式のLaTeX出力に変換するためのOCRモデルとして、TB-OCR-preview-0.1 [HF]の使用をおすすめします。
物体検出結果の形式:
{'': {'bboxes': [[x1, y1, x2, y2], ...],
'labels': ['label1', 'label2', ...]} }
🚀 クイックスタート
以下のコードを使用して、モデルを使用を開始できます。
CUDA非対応の環境では、この投稿を参照して簡単なパッチを適用してください: https://huggingface.co/microsoft/Florence-2-base/discussions/4
import requests
from PIL import Image
from transformers import AutoProcessor, AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("yifeihu/TFT-ID-1.0", trust_remote_code=True)
processor = AutoProcessor.from_pretrained("yifeihu/TFT-ID-1.0", trust_remote_code=True)
prompt = "<OD>"
url = "https://huggingface.co/yifeihu/TF-ID-base/resolve/main/arxiv_2305_10853_5.png?download=true"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(text=prompt, images=image, return_tensors="pt")
generated_ids = model.generate(
input_ids=inputs["input_ids"],
pixel_values=inputs["pixel_values"],
max_new_tokens=1024,
do_sample=False,
num_beams=3
)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=False)[0]
parsed_answer = processor.post_process_generation(generated_text, task="<OD>", image_size=(image.width, image.height))
print(parsed_answer)
結果を視覚化するには、このチュートリアルノートブックを参照してください。
✨ 主な機能
- 学術論文内の表、図、テキストセクションを高精度に識別します。
- テキストセクションの内容を下流のOCRワークフローに適した形式で提供します。
📦 インストール
コードの実行に必要なライブラリは、コード内で指定されている通りにインストールできます。以下のように、transformers
やrequests
、Pillow
などのライブラリをインストールします。
pip install transformers requests pillow
💻 使用例
基本的な使用法
import requests
from PIL import Image
from transformers import AutoProcessor, AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("yifeihu/TFT-ID-1.0", trust_remote_code=True)
processor = AutoProcessor.from_pretrained("yifeihu/TFT-ID-1.0", trust_remote_code=True)
prompt = "<OD>"
url = "https://huggingface.co/yifeihu/TF-ID-base/resolve/main/arxiv_2305_10853_5.png?download=true"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(text=prompt, images=image, return_tensors="pt")
generated_ids = model.generate(
input_ids=inputs["input_ids"],
pixel_values=inputs["pixel_values"],
max_new_tokens=1024,
do_sample=False,
num_beams=3
)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=False)[0]
parsed_answer = processor.post_process_generation(generated_text, task="<OD>", image_size=(image.width, image.height))
print(parsed_answer)
高度な使用法
結果の視覚化や、モデルの微調整などの高度な使用法については、このチュートリアルノートブックを参照してください。
📚 ドキュメント
訓練コードとデータセット
ベンチマーク
このモデルは、訓練データセット外の論文ページでテストされました。使用された論文は、Hugging Face Daily Paperのサブセットです。
正しい出力 - モデルが指定されたページ内のすべての表/図/テキストセクションに正しいバウンディングボックスを描画し、内容を欠落させないことを意味します。
タスク1: 表、図、およびテキストセクションの識別
モデル |
総画像数 |
正しい出力数 |
成功率 |
TFT-ID-1.0[HF] |
373 |
361 |
96.78% |
タスク2: 表と図の識別
モデル |
総画像数 |
正しい出力数 |
成功率 |
TFT-ID-1.0[HF] |
258 |
255 |
98.84% |
TF-ID-large[HF] |
258 |
253 |
98.06% |
注: 使用ケースによっては、一部の「誤った」出力も完全に使用可能な場合があります。たとえば、モデルが2つの子コンポーネントを持つ1つの図に2つのバウンディングボックスを描画する場合です。
🔧 技術詳細
- モデルはmicrosoft/Florence-2のチェックポイントから微調整されています。
- 訓練データはHugging Face Daily Papersの論文で、36,000以上のバウンディングボックスが手動で注釈付けされています。
📄 ライセンス
このモデルはMITライセンスの下で提供されています。
BibTexと引用情報
@misc{TF-ID,
author = {Yifei Hu},
title = {TF-ID: Table/Figure IDentifier for academic papers},
year = {2024},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/ai8hyf/TF-ID}},
}