license: mit
license_link: https://huggingface.co/microsoft/Florence-2-large/resolve/main/LICENSE
pipeline_tag: image-text-to-text
tags:
- 视觉
- 光学字符识别
- 图像分割
datasets:
- yifeihu/TFT-ID-1.0-coco
TFT-ID:学术论文表格/图表/文本识别器
模型概述
TFT-ID(表格/图表/文本识别器)是由Yifei Hu开发的专用于检测学术论文中表格、图表及文本区域的微调目标检测模型。

本模型基于microsoft/Florence-2检查点微调而成。
- 训练数据来自Hugging Face每日论文,所有36,000+个标注框均由Yifei Hu手工标注并校验
- 输入单页论文图像,输出该页所有表格、图表及文本区域的边界框
- 文本区域包含纯净文本内容,可直接对接OCR流程。推荐使用TB-OCR-preview-0.1 [HF]模型将文本区域转换为规整的Markdown及数学公式LaTeX输出
检测结果格式:
{'<OD>': {'bboxes': [[x1, y1, x2, y2], ...],
'labels': ['label1', 'label2', ...]} }
训练代码与数据集
性能基准
测试数据来自训练集外的论文页面(Hugging Face每日论文子集)。"正确输出"指模型准确标注所有表格/图表/文本区域且无遗漏。
任务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% |
注:部分"错误"输出实际仍可使用。例如将包含子组件的图表识别为多个边界框。
快速开始
使用以下代码运行模型。非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)
可视化教程参考此Colab笔记本
引用信息
@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}},
}