CutLER
CutLER 是一款专注于无监督物体检测与实例分割的开源 AI 框架,旨在让模型在无需任何人工标注数据的情况下,学会识别和分割图像或视频中的物体。它主要解决了传统视觉模型依赖昂贵且耗时的人工标注数据的痛点,仅需使用如 ImageNet-1K 这类未标注的通用数据集即可完成训练。
该工具特别适合计算机视觉领域的研究人员、算法工程师以及希望探索自监督学习潜力的开发者使用。其核心技术亮点在于提出了"MaskCut"方法,能够自动从单张图像中生成高质量的多物体伪掩码,进而驱动模型进行自我学习。实验表明,CutLER 在 11 个不同基准测试(涵盖自然图像、视频帧、绘画及草图等)上的表现优异,关键指标甚至超越了以往最先进方法的 2.6 倍以上,并展现出极强的跨域鲁棒性。
此外,CutLER 还衍生出了 VideoCutLER 版本,这是一个令人惊喜的视频实例分割方案。它打破了常规,无需依赖光流估计或天然视频数据,仅凭静态图像集就能训练出顶尖的视频分割模型。无论是作为无监督任务的独立解决方案,还是作为全监督或半监督任务的预训练底座,CutLER 都为降低数据标注成本、提升模型泛化能力提供了强有力的技术支持。
使用场景
一家初创安防公司急需构建能识别未知异常物体的视频监控系统,但团队面临海量监控录像完全缺乏人工标注数据的困境。
没有 CutLER 时
- 标注成本高昂:依赖人工逐帧绘制物体掩码(Mask),面对数万小时视频数据,标注预算和时间成本直接导致项目停滞。
- 冷启动困难:传统无监督方法在未见过的场景(如夜间、特殊角度)下泛化能力差,模型无法有效识别新类别的入侵物体。
- 技术门槛极高:现有视频实例分割方案通常依赖复杂的光流估计(Optical Flow)计算,对算力要求苛刻且难以调试部署。
- 数据利用率低:手中大量的公开图像数据集(如 ImageNet)因缺乏标注而无法用于训练专用的检测模型,造成资源浪费。
使用 CutLER 后
- 实现零标注训练:利用 CutLER 的 MaskCut 模块自动生成高质量伪掩码,直接在无标注的 ImageNet 数据上训练出高性能检测器,彻底省去人工标注环节。
- 跨域鲁棒性强:模型在自然图像、监控视频帧甚至素描等多种领域基准测试中表现优异,能稳定识别各种陌生环境下的异常目标。
- 架构极简高效:借助 VideoCutLER 特性,无需计算复杂的光流信息即可实现领先的视频实例分割效果,大幅降低了对硬件算力的依赖。
- 快速落地迭代:仅需单卡 GPU 即可运行演示代码生成伪标签,团队能在数天内完成从数据预处理到模型验证的全流程,加速产品上线。
CutLER 通过“切割与学习”机制,让开发者仅凭未标注的通用图像数据就能构建出超越以往技术的物体检测与分割系统,真正打破了数据标注的壁垒。
运行环境要求
- Linux
- 训练必需(示例命令使用 --num-gpus 8),推理支持 CPU(需添加 --cpu 或 MODEL.DEVICE cpu)
- 具体显卡型号、显存大小及 CUDA 版本未在文中明确说明,但基于 Detectron2 和 ViT 架构,通常建议 NVIDIA GPU 且显存充足
未说明

快速开始
无监督图像与视频目标检测及实例分割的剪切与学习
Cut-and-LEaRn (CutLER) 是一种无需人工标注即可训练目标检测和实例分割模型的简单方法。 它在 11 个基准测试上,AP50 指标比之前的 SOTA 提升了 2.7 倍,AR 指标提升了 2.6 倍。
无监督目标检测与实例分割的剪切与学习
王旭东 (Xudong Wang)、罗希特·吉尔达尔 (Rohit Girdhar)、斯黛拉·Y·余 (Stella X. Yu)、伊山·米斯拉 (Ishan Misra)
FAIR, Meta AI;加州大学伯克利分校
CVPR 2023
[项目页面] [arxiv] [colab] [bibtex]
同时支持无监督视频实例分割(VideoCutLER)。我们证明了视频实例分割模型可以在完全不使用任何人工标注、不依赖自然视频(仅使用 ImageNet 数据就足够)、甚至不需要运动估计的情况下进行学习! 代码可在 这里 获取。
VideoCutLER:令人惊讶的简单无监督视频实例分割
王旭东 (Xudong Wang)、伊山·米斯拉 (Ishan Misra)、曾子云、罗希特·吉尔达尔 (Rohit Girdhar)、特雷弗·达雷尔 (Trevor Darrell)
加州大学伯克利分校;FAIR, Meta AI
CVPR 2024
特性
- 我们提出了 MaskCut 方法,用于为图像中的多个目标生成伪掩码。
- CutLER 仅使用 ImageNet-1K 数据集即可学习无监督的目标检测器和实例分割模型。
- 在涵盖自然图像、视频帧、绘画、素描等多种领域的 11 个不同基准测试上,CutLER 对领域迁移表现出强大的鲁棒性。
- CutLER 可用作全监督或半监督检测与分割任务的预训练模型。
- 我们还提出了 VideoCutLER,这是一种无需依赖光流的惊人简单的无监督视频实例分割(UVIS)方法。只需 ImageNet-1K 数据集,就能训练出 SOTA 的 UVIS 模型!
安装
请参阅 安装说明。
数据集准备
请参阅 为 CutLER 准备数据集。
方法概述
1. MaskCut
MaskCut 可以为每张图像中的多个实例提供分割掩码。
MaskCut 演示
使用 Colab 尝试 MaskCut 演示(无需 GPU):
尝试网页演示:(感谢 @hysts!)
如果想在本地运行 MaskCut,我们提供了 demo.py,可以可视化 MaskCut 生成的伪掩码。
运行命令如下:
cd maskcut
python demo.py --img-path imgs/demo2.jpg \
--N 3 --tau 0.15 --vit-arch base --patch-size 8 \
[--其他选项]
我们在 maskcut/imgs/ 中提供了一些演示图片。如果想用 CPU 运行 demo.py,只需在运行脚本时添加 --cpu 即可。对于 imgs/demo4.jpg,需要使用 --N 6 才能分割图中的六个实例。
接下来是一些演示图片上伪掩码的可视化效果。
使用 MaskCut 为 ImageNet-1K 生成标注
要使用 MaskCut 为 ImageNet-1K 生成伪掩码,首先按照 datasets/README.md 中的说明设置 ImageNet-1K 数据集,然后执行以下命令:
cd maskcut
python maskcut.py \
--vit-arch base --patch-size 8 \
--tau 0.15 --fixed_size 480 --N 3 \
--num-folder-per-job 1000 --job-index 0 \
--dataset-path /path/to/dataset/traindir \
--out-dir /path/to/save/annotations \
由于为 1,000 个文件夹中的 130 万张图像生成伪掩码需要较长时间,建议分多次运行。每次运行时可通过设置 --num-folder-per-job 和 --job-index 来处理较少数量的图像文件夹。所有运行完成后,可以使用以下命令合并所有生成的 JSON 文件:
python merge_jsons.py \
--base-dir /path/to/save/annotations \
--num-folder-per-job 2 --fixed-size 480 \
--tau 0.15 --N 3 \
--save-path imagenet_train_fixsize480_tau0.15_N3.json
merge_jsons.py 中的 --num-folder-per-job、--fixed-size、--tau 和 --N 应与运行 maskcut.py 时使用的参数一致。
我们还提供了一个 submitit 脚本,用于在多台节点上启动伪掩码生成过程。
cd maskcut
bash run_maskcut_with_submitit.sh
之后,您可以按照上述说明使用 merge_jsons.py 合并所有这些 JSON 文件。
2. CutLER
使用预训练模型的 CutLER 推理演示
使用 Colab 试用 CutLER 演示(无需 GPU):
试用网页版演示:(感谢 @hysts!)
如果您想在本地运行 CutLER 演示,
- 从 模型库 中选择一个模型及其配置文件,例如
model_zoo/configs/CutLER-ImageNet/cascade_mask_rcnn_R_50_FPN.yaml。 - 我们提供了
demo.py,可用于演示内置配置。运行命令如下:
cd cutler
python demo/demo.py --config-file model_zoo/configs/CutLER-ImageNet/cascade_mask_rcnn_R_50_FPN_demo.yaml \
--input demo/imgs/*.jpg \
[--其他选项]
--opts MODEL.WEIGHTS /path/to/cutler_w_cascade_checkpoint
这些配置是为训练设计的,因此我们需要通过 MODEL.WEIGHTS 指定来自模型库的模型来进行评估。
该命令将执行推理,并在 OpenCV 窗口中显示可视化结果。
- 若要在 CPU 上 运行,可在
--opts后添加MODEL.DEVICE cpu。 - 若要将输出保存到目录(图像)或文件(网络摄像头或视频),可使用
--output。
接下来,我们展示模型在演示图像上的预测结果可视化效果。
无监督模型学习
在训练检测器之前,需要使用 MaskCut 为 ImageNet 数据集中的所有图像生成伪掩码。
您可以直接使用预先生成的 JSON 文件,从 这里 下载并将其放置在 DETECTRON2_DATASETS/imagenet/annotations/ 目录下;或者按照 MaskCut 中的说明自行生成伪掩码。
我们提供了一个脚本 train_net.py,用于训练 CutLER 中提供的所有配置文件。
要使用 train_net.py 训练模型,首先请按照 datasets/README.md 设置 ImageNet-1K 数据集,然后运行:
cd cutler
export DETECTRON2_DATASETS=/path/to/DETECTRON2_DATASETS/
python train_net.py --num-gpus 8 \
--config-file model_zoo/configs/CutLER-ImageNet/cascade_mask_rcnn_R_50_FPN.yaml
如果您希望使用多节点训练模型,可能需要调整 某些模型参数 以及 “tools/train-1node.sh” 和 “tools/single-node_run.sh” 中的 SBATCH 命令选项,然后运行:
cd cutler
sbatch tools/train-1node.sh \
--config-file model_zoo/configs/CutLER-ImageNet/cascade_mask_rcnn_R_50_FPN.yaml \
MODEL.WEIGHTS /path/to/dino/d2format/model \
OUTPUT_DIR output/
您也可以按照 此链接 自行将预训练的 DINO 模型转换为 detectron2 格式。
自我训练
我们通过利用模型自身的预测结果进行自我训练,进一步提升了性能。
首先,我们可以通过以下命令获取模型在 ImageNet 上的预测结果:
python train_net.py --num-gpus 8 \
--config-file model_zoo/configs/CutLER-ImageNet/cascade_mask_rcnn_R_50_FPN.yaml \
--test-dataset imagenet_train \
--eval-only TEST.DETECTIONS_PER_IMAGE 30 \
MODEL.WEIGHTS output/model_final.pth \ # 加载上一阶段/轮次的检查点
OUTPUT_DIR output/ # 保存模型预测结果的路径
其次,我们可以运行以下命令生成第一轮自我训练的 JSON 文件:
python tools/get_self_training_ann.py \
--new-pred output/inference/coco_instances_results.json \ # 加载模型预测结果
--prev-ann DETECTRON2_DATASETS/imagenet/annotations/imagenet_train_fixsize480_tau0.15_N3.json \ # 老的标注文件路径
--save-path DETECTRON2_DATASETS/imagenet/annotations/cutler_imagenet1k_train_r1.json \ # 新标注文件的保存路径
--threshold 0.7
最后,将 “cutler_imagenet1k_train_r1.json” 放置在 “DETECTRON2_DATASETS/imagenet/annotations/” 目录下,然后启动自我训练过程:
python train_net.py --num-gpus 8 \
--config-file model_zoo/configs/CutLER-ImageNet/cascade_mask_rcnn_R_50_FPN_self_train.yaml \
--train-dataset imagenet_train_r1 \
MODEL.WEIGHTS output/model_final.pth \ # 加载上一阶段/轮次的检查点
OUTPUT_DIR output/self-train-r1/ # 保存检查点的路径
您可以重复上述步骤进行多轮自我训练,并根据需要调整一些参数(例如,第 1 轮和第 2 轮的 “--threshold” 可分别设置为 0.7 和 0.65;第 1 轮和第 2 轮的 “--train-dataset” 可分别设置为 “imagenet_train_r1” 和 “imagenet_train_r2”;“MODEL.WEIGHTS” 应指向上一阶段/轮次的检查点)。请确保所有标注文件都放置在 DETECTRON2_DATASETS/imagenet/annotations/ 目录下。 请务必使 “--train-dataset”、JSON 文件名称及位置与 “cutler/data/datasets/builtin.py” 中指定的一致。 有关使用自定义数据集的指导,请参考 此说明。
您还可以直接下载每一轮自我训练所使用的 MODEL.WEIGHTS 和标注文件:
| 第 1 轮 | cutler_cascade_r1.pth | cutler_imagenet1k_train_r1.json |
| 第 2 轮 | cutler_cascade_r2.pth | cutler_imagenet1k_train_r2.json |
无监督零样本评估
要评估模型在 11 个不同数据集上的性能,请参阅 datasets/README.md 了解数据集准备说明。然后,从模型库中选择一个模型,在 tools/eval.sh 中指定 “model_weights”、“config_file” 和 “DETECTRON2_DATASETS” 的路径,再运行该脚本。
bash tools/eval.sh
模型动物园
我们在涵盖多种领域的11个不同数据集上展示了零样本无监督目标检测性能(AP50 | AR)。^:CutLER 使用 Mask R-CNN 作为检测器;*:CutLER 使用 Cascade Mask R-CNN 作为检测器。
| 方法 | 模型 | COCO | COCO20K | VOC | LVIS | UVO | Clipart | Comic | Watercolor | KITTI | Objects365 | OpenImages |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 先前SOTA | - | 9.6 | 12.6 | 9.7 | 12.6 | 15.9 | 21.3 | 3.8 | 6.4 | 10.0 | 14.2 | 7.9 | 15.1 | 9.9 | 16.3 | 6.7 | 16.2 | 7.7 | 7.1 | 8.1 | 10.2 | 9.9 | 14.9 |
| CutLER^ | 下载 | 21.1 | 29.6 | 21.6 | 30.0 | 36.6 | 41.0 | 7.7 | 18.7 | 29.8 | 38.4 | 20.9 | 38.5 | 31.2 | 37.1 | 37.3 | 39.9 | 15.3 | 25.4 | 19.5 | 30.0 | 17.1 | 26.4 |
| CutLER* | 下载 | 21.9 | 32.7 | 22.4 | 33.1 | 36.9 | 44.3 | 8.4 | 21.8 | 31.7 | 42.8 | 21.1 | 41.3 | 30.4 | 38.6 | 37.5 | 44.6 | 18.4 | 27.5 | 21.6 | 34.2 | 17.3 | 29.6 |
半监督与全监督学习
CutLER 还可以作为预训练模型,用于训练完全监督的目标检测和实例分割模型,并在 COCO 数据集上提升性能,包括在少样本基准测试中。
命令行中的训练与评估
您可以在 model_zoo/configs/COCO-Semisupervised 下找到 CutLER 提供的所有半监督和全监督学习配置文件。
要使用 train_net.py 利用 K% 的标注数据训练模型,首先按照 datasets/README.md 设置 COCO 数据集,并在配置文件中指定 K 值,然后运行:
python train_net.py --num-gpus 8 \
--config-file model_zoo/configs/COCO-Semisupervised/cascade_mask_rcnn_R_50_FPN_{K}perc.yaml \
MODEL.WEIGHTS /path/to/cutler_pretrained_model
您可以在 model_zoo/configs/COCO-Semisupervised 下找到所有用于训练监督模型的配置文件。这些配置适用于 8 张 GPU 卡的训练。如果要在单张 GPU 上训练,您可能需要调整一些参数,例如 GPU 数量 (num-gpus your_num_gpus)、学习率 (SOLVER.BASE_LR your_base_lr) 和批量大小 (SOLVER.IMS_PER_BATCH your_batch_size)。
评估
要评估模型性能,请使用:
python train_net.py \
--config-file model_zoo/configs/COCO-Semisupervised/cascade_mask_rcnn_R_50_FPN_{K}perc.yaml \
--eval-only MODEL.WEIGHTS /path/to/checkpoint_file
更多选项请参阅 python train_net.py -h。
模型动物园
我们在不同数量的 COCO 标注数据上对使用 CutLER 或 MoCo-v2 初始化的 Cascade R-CNN 模型进行微调,并在下面的 val2017 分割上展示了结果(Box | Mask AP):
| 标注比例 | 1% | 2% | 5% | 10% | 20% | 30% | 40% | 50% | 60% | 80% | 100% |
|---|---|---|---|---|---|---|---|---|---|---|---|
| MoCo-v2 | 11.8 | 10.0 | 16.2 | 13.8 | 20.5 | 17.8 | 26.5 | 23.0 | 32.5 | 28.2 | 35.5 | 30.8 | 37.3 | 32.3 | 38.7 | 33.6 | 39.9 | 34.6 | 41.6 | 36.0 | 42.8 | 37.0 |
| CutLER | 16.8 | 14.6 | 21.6 | 18.9 | 27.8 | 24.3 | 32.2 | 28.1 | 36.6 | 31.7 | 38.2 | 33.3 | 39.9 | 34.7 | 41.5 | 35.9 | 42.3 | 36.7 | 43.8 | 37.9 | 44.7 | 38.5 |
| 下载 | 模型 | 模型 | 模型 | 模型 | 模型 | 模型 | 模型 | 模型 | 模型 | 模型 | 模型 |
MoCo-v2 和我们的 CutLER 均使用 Detectron2 按照 1x 调度进行训练,除了标注比例仅为 1% 或 2% 的极低样本量设置。在使用 1% 或 2% 标注进行训练时,我们分别对 MoCo-v2 和我们的模型进行 3,600 次迭代训练,批次大小为 16。
许可证
CutLER、Detectron2 和 DINO 的大部分内容采用 CC-BY-NC 许可证授权,但项目中的部分内容则以单独的许可条款提供:TokenCut、Bilateral Solver 和 CRF 采用 MIT 许可证授权;如果您后续添加了其他第三方代码,请务必更新此许可证信息,并告知我们该组件是否采用 CC-BY-NC、MIT 或 CC0 之外的其他许可证。
伦理考量
CutLER 广泛的检测能力可能会带来与其他视觉识别方法类似的挑战。 由于图像中可能包含任意实例,这可能会对模型输出产生影响。
如何获得我们的支持?
如果您有任何一般性问题,欢迎发送邮件至 Xudong Wang、Ishan Misra 和 Rohit Girdhar。如果您有关于代码或实现的问题,也欢迎随时向我们发送邮件或在此代码库中提交问题(我们建议您在此代码库中提交问题,因为您的问题可能会帮助其他人)。
引用
如果您觉得我们的工作富有启发性,或者在您的研究中使用了我们的代码库,请考虑为我们点亮一颗星 ⭐ 并引用我们的论文。
@inproceedings{wang2023cut,
title={无监督目标检测与实例分割的剪切与学习},
author={Wang, Xudong and Girdhar, Rohit and Yu, Stella X and Misra, Ishan},
booktitle={IEEE/CVF 计算机视觉与模式识别会议论文集},
pages={3124--3134},
year={2023}
}
@article{wang2023videocutler,
title={VideoCutLER:令人惊讶的简单无监督视频实例分割},
author={Wang, Xudong and Misra, Ishan and Zeng, Ziyun and Girdhar, Rohit and Darrell, Trevor},
journal={arXiv 预印本 arXiv:2308.14710},
year={2023}
}
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。
tesseract
Tesseract 是一款历史悠久且备受推崇的开源光学字符识别(OCR)引擎,最初由惠普实验室开发,后由 Google 维护,目前由全球社区共同贡献。它的核心功能是将图片中的文字转化为可编辑、可搜索的文本数据,有效解决了从扫描件、照片或 PDF 文档中提取文字信息的难题,是数字化归档和信息自动化的重要基础工具。 在技术层面,Tesseract 展现了强大的适应能力。从版本 4 开始,它引入了基于长短期记忆网络(LSTM)的神经网络 OCR 引擎,显著提升了行识别的准确率;同时,为了兼顾旧有需求,它依然支持传统的字符模式识别引擎。Tesseract 原生支持 UTF-8 编码,开箱即用即可识别超过 100 种语言,并兼容 PNG、JPEG、TIFF 等多种常见图像格式。输出方面,它灵活支持纯文本、hOCR、PDF、TSV 等多种格式,方便后续数据处理。 Tesseract 主要面向开发者、研究人员以及需要构建文档处理流程的企业用户。由于它本身是一个命令行工具和库(libtesseract),不包含图形用户界面(GUI),因此最适合具备一定编程能力的技术人员集成到自动化脚本或应用程序中
