---
title: algorithm-det-240920
canonical_url: "https://www.modelscope.cn/datasets/irhawks/algorithm-det-240920"
md_url: "https://www.modelscope.cn/datasets/irhawks/algorithm-det-240920.md"
repository: irhawks/algorithm-det-240920
chinese_name: "算法块检测数据集"
last_updated: 2024-09-20
license: "Apache License 2.0"
storage_size: "15 GB"
domain:
  - language
  - domain
  - tasks
  - frameworks
  - tools
tasks:
  - cn
  - "document layout analysis"
  - domain-specific-object-detection
  - Pytorch
  - ultralytics
downloads: 757
stars: 0
---

# algorithm-det-240920

> algorithm-det-240920 - irhawks 在 ModelScope 开源的数据集。从DocGenome数据集中分别抽取所标注的算法块和代码块，分别制作成算法块检测数据集`alg-det-dataset`，以及代码块检测数据集`code-det-dataset`，标注格式为YOLO-HBB，可用ultralytics直接训练

irhawks/algorithm-det-240920 是 ModelScope 魔搭社区上的cn、document layout analysis、domain-specific-object-detection数据集，涉及 language、domain、tasks 领域，存储大小 15 GB，采用 Apache License 2.0 许可。

- **Repository**: irhawks/algorithm-det-240920
- **License**: Apache License 2.0
- **Tasks**: cn, document layout analysis, domain-specific-object-detection, Pytorch, ultralytics
- **Domain**: language, domain, tasks, frameworks, tools
- **Storage size**: 15 GB
- **Downloads**: 757
- **Stars**: 0
- **Last updated**: 2024-09-20

Source: https://www.modelscope.cn/datasets/irhawks/algorithm-det-240920

---

**文档图像中的算法块与代码块检测数据集**

# 下载方法 

:modelscope-code[]{type="sdk"}
:modelscope-code[]{type="git"}

# 需求概述

学术和技术文献中为了更准确地说明技术方案，对技术方案的核心部分进行分析，往往会加入一定比例的代码和算法，在信息领域的文献中尤其常见。这一实践，是仅仅靠成段文字、分条枚举，表格说明或者图片解释所不能代替的。因此，阅读这些文献时，**快速定位到特定的技术细节或者算法实现，看看文献中的“干货”到底长个什么样，从而发现关键创新**，是个常见需求。

我们获得的学术和技术文献通常以文本、图像或者双层的PDF文档而出现，无论哪种类型的PDF，都可以将每页PDF转换成文档图像，通过OCR等方式检测其中的文本、公式、标题、图片、表格等元素，然后进行识别。目前**来自MinerU提供的PDF-Extract-Kit，Surya等许多版面分析模型在检测文本、公式、标题、图片、表格等元素上已经获得了比较高的准确率，在很多场景下的表现日趋完美**。但是**这些模型在遇到含有代码块还有算法块的文献时，往往效果不尽如人意，从而限制了在需要理解代码块和算法块的场景中的应用**。

典型问题包括：

(1) 代码块或算法块被误识别为段落文本，从而和正常文本一样被识别和排版处理，但是因为算法块和代码块中的行号等特征，导致后续识别文献中的代码和算法时效果较差；
(2) 代码块或算法块不能被这些模型所理解，被分割成多个段落文本，从而被人为拆开；
(3) 有些代码块或算法块的特征比较明显，已有版面结构分析模型可能并没有专门在这些数据上训练，所以遇到这些分布外的元素时，出现近乎乱码的现象。

以MinerU开源的版面结构分析模型为例，在识别一些arXiv文章时，一些在算法块上的相对不理想的示例如下（类别名称使用中文，比如Text标记为“正文文本”）：

![上部的算法块被PDF-Extract-Kit标记为正文文本（arXiv:2108.08331第11页）](images/tmp2mz5rwrp.PNG)

![左侧中部的算法块被识别成多个元素，并且中间有漏掉的行（arXiv:2108.08357第3页）](images/tmpp1hi78ad.PNG)

![右侧上部的算法块被拆成多个，其中的黑体被认为是章节标题（arXiv:2108.08447第5页）](images/tmpoljo3yut.PNG)

一些在代码块上的badcase举例如下：

![两个代码块未被检测到，模型产生了多个检测框，数量、位置和类别均不理想，并且区域间有重叠（arXiv:2207.01499第7页）](images/tmpu5zv4_8k.PNG)

![代码块被误认为行间公式，可能会导致被识别成LaTeX数学公式（arXiv:2203.02676第6页）](images/tmpu7ai8i5n.PNG)

总之，这些优秀的开源模型，在遇到页面中含有算法块或者代码块时，对应区域的识别效果就会大打折扣，产生的结果很不理想。为此，就**需要在这两类页面元素上进行有针对性的优化，使得能够直接检测到算法块和代码块，并标出正确的位置**。

# 数据收集

最近，上海人工智能实验室联合上海交通大学、浙江大学、复旦大学团队，发布了首个大规模多模态结构化科学文献基准数据集 DocGenome（TB级）。数据集的地址可见<https://github.com/UniModal4Reasoning/DocGenome>

该数据集包含了对文档图像中元素类别的全面标注，其中就包括算法块和代码块两个类别。因此，可以考虑从该数据集中分别抽取所标注的算法块和代码块，分别制作成算法块检测数据集`alg-det-dataset`，以及代码块检测数据集`code-det-dataset`，中间将格式转换成X-AnyLabel，便于在标注界面中查看，然后转换标注格式为YOLO-HBB格式，分别发布在Huggingface上，地址链接分别如下：

- <https://modelscope.cn/datasets/irhawks/algorithm-det>
- <https://modelscope.cn/datasets/irhawks/code-det>

动手实践之后，抽取出来含算法块的图像13617张，含代码块的图像7463张。由于标注效果粗看起来比较好，所以截取离现在最近的一些arXiv文章放在验证集和测试集当中。

| 数据集名称       | 标识             | 样本量 | 训练集train | 验证集val | 测试集test |
|------------------|------------------|--------|-------------|-----------|------------|
| 算法块检测数据集 | alg-det-dataset  | 13617  | 10615       | 2002      | 1000       |
| 代码块检测数据集 | code-det-dataset | 7463   | 6493        | 849       | 121        |

: 数据集信息统计

![代码块已标注样本](images/paste-2.png)

![算法块已标注样本](images/paste-3.png)

# 模型训练

基于ultralytics框架，使用2种架构共7个尺寸大小的模型，模型分别是RT-DETR-L, RT-DETR-X, YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x。分别在两个数据集上分别训练。每个模型3张卡，batch=12, 训练时将图像大小调整为1024x720（与A4纸比例相同），训练100个epochs。训练之后，发现这几个模型的准确率都比较接近，而且最小尺寸的YOLOv8n就可以得到非常不错的效果，推荐在实际中使用该模型。训练好的权值文件，在Huggingface中的地址链接分别如下：

- <https://modelscope.cn/models/irhawks/algorithm-det>
- <https://modelscope.cn/models/irhawks/code-det>

有两点需要说明的：

1.  发布的DocGenome数据集对算法块的标注较为准确，但有时候把算法块的标题第一行标进去，有时候不把第一行标进去，标注标准存在不一致的情况，所以本次训练出来的模型，也继承了这一特点。
2.  发布的DocGenome数据集对代码块的标注不太准确，实际上一些标注出来的区域更像是行间公式。所以标注中就存在一定的误判比例。本次训练出来的模型，也继承了这一特点，并且存在一些代码块位置检测不准的情况。

![标注代码块时存在的个别错误](images/paste-1.png)

部分模型的表现分别如下，详情见于Huggingface上每个模型对应的文件夹。

![基于RT-DETR-L的算法块检测模型性能](alg-det-20240918/train3/results.png)

![基于YOLOv8n的算法块检测算法的性能](alg-det-20240918/train4/results.png)

![基于YOLOv8n的代码块检测模型的性能](code-det-20240918/train5/results.png)

# 预测示例

训练好的模型，在新数据上进行预测，基本上能够纠正原有版面结构分析模型中的识别错误。预测代码示例如下：

``` bash
yolo predict imgsz=1024,720 model=yolov8n.pt source=xxxx.png
```

在前面需求概述中的几个样本，均在测试集/验证集中，使用训练好的模型对样本进行预测，结果分别如下：

![算法块检测：arXiv:2108.08331第11页](images/2108.08331-page_0011.png)

![算法块检测：arXiv:2108.08357第3页](images/2108.08357-page_0003.png)

![算法块检测：arXiv:2108.08447第5页](images/2108.08447-page_0005.png)

![代码块检测：arXiv:2108.08357第3页](images/2207.01499-page_0007.png)

![代码块预测：arXiv:2203.02676第6页](images/2203.02676-page_0006.png)

# 思维拓展

1.  模型是在arXiv数据集上进行训练的，所以后续如果中文文献中有需求，可以按照这个思路标注文档图像并进一步训练。本模型在中文上的表现也有待探索；
2.  现在分享论文等场景中，通常是以截图的形式把算法块和代码块贴出来，围绕贴图进行分析。本模型可以作为文档智能检测与识别流程的一个环节，起到替代手工截图的功能。
