kotlindl
KotlinDL 是一款专为 Kotlin 开发者打造的高级深度学习框架,其设计理念深受流行的 Keras 启发。它旨在降低 JVM 和 Android 生态中构建人工智能应用的门槛,让开发者能够使用熟悉的 Kotlin 语法,轻松完成从模型训练、迁移学习到推理部署的全流程工作。
传统上,在 Java 或 Kotlin 环境中进行深度学习开发往往需要调用复杂的底层 API 或依赖 Python 环境,这增加了工程集成的难度。KotlinDL 通过封装 TensorFlow Java 和 ONNX Runtime 底层能力,提供了简洁流畅的链式调用接口。开发者只需几行代码即可定义如 LeNet 这样的经典卷积神经网络,并快速完成编译、训练与评估,极大地简化了生产环境中的模型落地过程。
此外,KotlinDL 支持直接导入现有的 Keras 和 ONNX 模型进行推理,方便复用社区丰富的预训练资源。它不仅适合希望将 AI 功能集成到移动端或服务端的 Android 及后端工程师,也适用于偏好类型安全语言的研究人员。借助其对 GPU 加速的支持以及与 Jupyter Notebook 的良好兼容,KotlinDL 让深度学习在 Kotlin 生态中变得更加直观、高效且易于维护。
使用场景
某安卓开发团队需要在移动端集成一个手写数字识别功能,但团队成员主要熟悉 Kotlin 语言,缺乏 Python 深度学习背景。
没有 kotlindl 时
- 语言割裂严重:必须使用 Python 训练模型再转换为 TensorFlow Lite,导致 JVM 开发者需跨语言协作,沟通成本极高。
- 环境配置繁琐:需在服务器搭建复杂的 Python 依赖环境(如 CUDA、特定版 TensorFlow),维护难度大且容易出错。
- 调试困难:无法在 Android Studio 中直接断点调试模型构建过程,出现维度错误或参数问题时难以定位根源。
- 部署流程冗长:从模型训练到嵌入安卓应用需经过多次格式转换和中间件处理,迭代周期长达数天。
使用 kotlindl 后
- 纯 Kotlin 开发:直接使用 Kotlin 代码定义如 LeNet 般的卷积神经网络,无需切换语言,团队可独立闭环完成开发。
- 原生集成体验:依托 TensorFlow Java API 和 ONNX Runtime,直接在现有 Gradle 项目中引入依赖,免去外部环境配置。
- IDE 友好调试:利用 IntelliJ IDEA 或 Android Studio 的类型检查和断点功能,实时验证模型结构与数据流向。
- 高效端侧部署:支持直接在 JVM/Android 环境中训练或加载预训练模型,将“训练 - 验证 - 部署”流程缩短至几小时内。
kotlindl 让 JVM 和安卓开发者能用熟悉的语言无缝构建与部署深度学习模型,彻底打破了算法工程化的语言壁垒。
运行环境要求
- Windows
- Linux
- macOS
- 非必需
- 若需启用 GPU 训练/推理,必须使用 NVIDIA 显卡
- 文中明确提及 Windows 下需 CUDA 10.0 和 cuDNN 7.6.3(对应 TensorFlow 1.15),ONNX Runtime GPU 支持需额外配置
- 显存大小未说明
未说明

快速开始
KotlinDL:Kotlin 高级深度学习 API 
KotlinDL 是一个用 Kotlin 编写的高级深度学习 API,其灵感来源于 Keras。在底层,它使用 TensorFlow Java API 和 ONNX Runtime 的 Java API。KotlinDL 提供了简洁的 API,可用于从头开始训练深度学习模型、导入现有的 Keras 和 ONNX 模型进行推理,以及利用迁移学习将现有的预训练模型调整到您的任务中。
该项目旨在让 JVM 和 Android 开发者更轻松地进行深度学习,并简化深度学习模型在生产环境中的部署。
以下是在 KotlinDL 中经典卷积神经网络 LeNet 的示例:
private const val EPOCHS = 3
private const val TRAINING_BATCH_SIZE = 1000
private const val NUM_CHANNELS = 1L
private const val IMAGE_SIZE = 28L
private const val SEED = 12L
private const val TEST_BATCH_SIZE = 1000
private val lenet5Classic = Sequential.of(
Input(
IMAGE_SIZE,
IMAGE_SIZE,
NUM_CHANNELS
),
Conv2D(
filters = 6,
kernelSize = intArrayOf(5, 5),
strides = intArrayOf(1, 1, 1, 1),
activation = Activations.Tanh,
kernelInitializer = GlorotNormal(SEED),
biasInitializer = Zeros(),
padding = ConvPadding.SAME
),
AvgPool2D(
poolSize = intArrayOf(1, 2, 2, 1),
strides = intArrayOf(1, 2, 2, 1),
padding = ConvPadding.VALID
),
Conv2D(
filters = 16,
kernelSize = intArrayOf(5, 5),
strides = intArrayOf(1, 1, 1, 1),
activation = Activations.Tanh,
kernelInitializer = GlorotNormal(SEED),
biasInitializer = Zeros(),
padding = ConvPadding.SAME
),
AvgPool2D(
poolSize = intArrayOf(1, 2, 2, 1),
strides = intArrayOf(1, 2, 2, 1),
padding = ConvPadding.VALID
),
Flatten(), // 3136
Dense(
outputSize = 120,
activation = Activations.Tanh,
kernelInitializer = GlorotNormal(SEED),
biasInitializer = Constant(0.1f)
),
Dense(
outputSize = 84,
activation = Activations.Tanh,
kernelInitializer = GlorotNormal(SEED),
biasInitializer = Constant(0.1f)
),
Dense(
outputSize = 10,
activation = Activations.Linear,
kernelInitializer = GlorotNormal(SEED),
biasInitializer = Constant(0.1f)
)
)
fun main() {
val (train, test) = mnist()
lenet5Classic.use {
it.compile(
optimizer = Adam(clipGradient = ClipGradientByValue(0.1f)),
loss = Losses.SOFT_MAX_CROSS_ENTROPY_WITH_LOGITS,
metric = Metrics.ACCURACY
)
it.logSummary()
it.fit(dataset = train, epochs = EPOCHS, batchSize = TRAINING_BATCH_SIZE)
val accuracy = it.evaluate(dataset = test, batchSize = TEST_BATCH_SIZE).metrics[Metrics.ACCURACY]
println("Accuracy: $accuracy")
}
}
目录
- 库结构
- 如何在您的项目中配置 KotlinDL
- KotlinDL、ONNX Runtime、Android 和 JDK 版本
- 文档
- 示例和教程
- 在 GPU 上运行 KotlinDL
- 日志记录
- Fat Jar 问题
- 限制
- 贡献
- 报告问题/支持
- 行为准则
- 许可证
库结构
KotlinDL 由多个模块组成:
kotlin-deeplearning-apiAPI 接口和类kotlin-deeplearning-impl实现类和工具kotlin-deeplearning-onnx使用 ONNX Runtime 进行推理kotlin-deeplearning-tensorflow使用 TensorFlow 进行学习和推理kotlin-deeplearning-visualization可视化工具kotlin-deeplearning-dataset数据集类
其中,kotlin-deeplearning-tensorflow 和 kotlin-deeplearning-dataset 模块仅适用于桌面 JVM,而其他工件也可以在 Android 上使用。
如何在您的项目中配置 KotlinDL
要在您的项目中使用 KotlinDL,请确保已将 mavenCentral 添加到仓库列表中:
repositories {
mavenCentral()
}
然后将必要的依赖项添加到您的 build.gradle 文件中。
要开始创建简单的神经网络或下载预训练模型,只需添加以下依赖项:
// build.gradle
dependencies {
implementation 'org.jetbrains.kotlinx:kotlin-deeplearning-tensorflow:[KOTLIN-DL-VERSION]'
}
// build.gradle.kts
dependencies {
implementation ("org.jetbrains.kotlinx:kotlin-deeplearning-tensorflow:[KOTLIN-DL-VERSION]")
}
要使用 ONNX Runtime 进行推理,请使用 kotlin-deeplearning-onnx 模块:
// build.gradle
dependencies {
implementation 'org.jetbrains.kotlinx:kotlin-deeplearning-onnx:[KOTLIN-DL-VERSION]'
}
// build.gradle.kts
dependencies {
implementation ("org.jetbrains.kotlinx:kotlin-deeplearning-onnx:[KOTLIN-DL-VERSION]")
}
要在您的项目中充分利用 KotlinDL 的功能,请将以下依赖项添加到您的 build.gradle 文件中:
// build.gradle
dependencies {
implementation 'org.jetbrains.kotlinx:kotlin-deeplearning-tensorflow:[KOTLIN-DL-VERSION]'
implementation 'org.jetbrains.kotlinx:kotlin-deeplearning-onnx:[KOTLIN-DL-VERSION]'
implementation 'org.jetbrains.kotlinx:kotlin-deeplearning-visualization:[KOTLIN-DL-VERSION]'
}
// build.gradle.kts
dependencies {
implementation ("org.jetbrains.kotlinx:kotlin-deeplearning-tensorflow:[KOTLIN-DL-VERSION]")
implementation ("org.jetbrains.kotlinx:kotlin-deeplearning-onnx:[KOTLIN-DL-VERSION]")
implementation ("org.jetbrains.kotlinx:kotlin-deeplearning-visualization:[KOTLIN-DL-VERSION]")
}
最新的稳定版 KotlinDL 是 0.5.2,最新的不稳定版是 0.6.0-alpha-1。
有关更多详细信息以及 pom.xml 和 build.gradle.kts 示例,请参阅
快速入门指南。
在 Jupyter Notebook 中使用 KotlinDL
您可以在 Jupyter Notebook 中通过 Kotlin 内核以交互方式使用 KotlinDL。为此,请在笔记本中添加所需的依赖项:
@file:DependsOn("org.jetbrains.kotlinx:kotlin-deeplearning-tensorflow:[KOTLIN-DL-VERSION]")
有关安装 Jupyter Notebook 和添加 Kotlin 内核的更多详细信息,请参阅 快速入门指南。
在 Android 项目中使用 KotlinDL
KotlinDL 支持在 Android 平台上对 ONNX 模型进行推理。要在您的 Android 项目中使用 KotlinDL,请将以下依赖项添加到 build.gradle 文件中:
// build.gradle
implementation 'org.jetbrains.kotlinx:kotlin-deeplearning-onnx:[KOTLIN-DL-VERSION]'
// build.gradle.kts
implementation ("org.jetbrains.kotlinx:kotlin-deeplearning-onnx:[KOTLIN-DL-VERSION]")
有关更多详细信息,请参阅 快速入门指南。
KotlinDL、ONNX Runtime、Android 和 JDK 版本对应关系
下表展示了 KotlinDL、TensorFlow、ONNX Runtime、Android 编译 SDK 以及最低支持的 Java 版本之间的对应关系。
| KotlinDL 版本 | 最低 Java 版本 | ONNX Runtime 版本 | TensorFlow 版本 | Android:编译 SDK 版本 |
|---|---|---|---|---|
| 0.1.* | 8 | 1.15 | ||
| 0.2.0 | 8 | 1.15 | ||
| 0.3.0 | 8 | 1.8.1 | 1.15 | |
| 0.4.0 | 8 | 1.11.0 | 1.15 | |
| 0.5.0–0.5.1 | 11 | 1.12.1 | 1.15 | 31 |
| 0.5.2 | 11 | 1.14.0 | 1.15 | 31 |
| 0.6.* | 11 | 1.16.0 | 1.15 | 31 |
文档
- 演示文稿和视频:
- 使用 KotlinDL 进行深度学习(Zinoviev Alexey 在华为开发者社区 HDG UK 2021 上的演讲,幻灯片)
- KotlinDL 深度学习简介(Zinoviev Alexey 在 Kotlin 布达佩斯用户组 2021 上的演讲,幻灯片)
- KotlinDL 变更日志
- 完整的 KotlinDL API 参考文档
示例与教程
使用 KotlinDL 不需要具备深度学习的先验经验。
我们正在努力编写详尽的文档来帮助您快速上手。目前,您可以参考我们准备的以下教程:
- 快速入门指南
- 创建您的第一个神经网络
- 导入 Keras 模型
- 迁移学习
- 使用函数式 API 进行迁移学习
- 在 JVM 上使用 ONNX 模型进行推理
- 在 Android 上使用 ONNX 模型进行推理
如需更多灵感,请查看此仓库中的 代码示例 以及 示例 Android 应用。
在 GPU 上运行 KotlinDL
要启用 GPU 上的训练和推理,请阅读 TensorFlow GPU 支持页面,并安装 CUDA 框架以支持 GPU 设备上的计算。
请注意,仅支持 NVIDIA 显卡。
如果您希望利用 GPU,还需要在项目中添加以下依赖项:
// build.gradle
implementation 'org.tensorflow:libtensorflow:1.15.0'
implementation 'org.tensorflow:libtensorflow_jni_gpu:1.15.0'
// build.gradle.kts
implementation ("org.tensorflow:libtensorflow:1.15.0")
implementation ("org.tensorflow:libtensorflow_jni_gpu:1.15.0")
在 Windows 系统上,还需要安装以下组件:
- CUDA cuda_10.0.130_411.31_win10
- cuDNN 7.6.3
- C++ Redistributable
对于在 CUDA 设备上对 ONNX 模型进行推理,您还需要在项目中添加以下依赖项:
// build.gradle
api 'com.microsoft.onnxruntime:onnxruntime_gpu:1.16.0'
// build.gradle.kts
api("com.microsoft.onnxruntime:onnxruntime_gpu:1.16.0")
有关 ONNXRuntime 和 CUDA 版本兼容性的更多信息,请参阅 ONNXRuntime CUDA 执行提供程序页面。
日志记录
默认情况下,API 模块使用 kotlin-logging 库来将日志记录流程与具体的日志记录器实现分离。
你可以使用任何具有 Simple Logging Facade for Java (SLF4J) 实现的广泛使用的 JVM 日志库,例如 Logback 或 Log4j/Log4j2。
如果你希望使用 Log4j2,还需要在项目的 src/resource 文件夹中添加以下依赖项和配置文件 log4j2.xml:
// build.gradle
implementation 'org.apache.logging.log4j:log4j-api:2.17.2'
implementation 'org.apache.logging.log4j:log4j-core:2.17.2'
implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.17.2'
// build.gradle.kts
implementation("org.apache.logging.log4j:log4j-api:2.17.2")
implementation("org.apache.logging.log4j:log4j-core:2.17.2")
implementation("org.apache.logging.log4j:log4j-slf4j-impl:2.17.2")
<Configuration status="WARN">
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="STDOUT" level="DEBUG"/>
</Root>
<Logger name="io.jhdf" level="off" additivity="true">
<appender-ref ref="STDOUT" />
</Logger>
</Loggers>
</Configuration>
如果你想使用 Logback,则需要在项目的 src/resource 文件夹中包含以下依赖项和配置文件 logback.xml:
// build.gradle
implementation 'ch.qos.logback:logback-classic:1.4.5'
// build.gradle.kts
implementation("ch.qos.logback:logback-classic:1.4.5")
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
这些配置文件可以在 examples 模块中找到。
Fat Jar 问题
Stack Overflow 上有一个已知的问题 question 和 TensorFlow 的一个 issue,涉及在 Amazon EC2 实例上创建和运行 Fat Jar 时出现的问题。
java.lang.UnsatisfiedLinkError: /tmp/tensorflow_native_libraries-1562914806051-0/libtensorflow_jni.so: libtensorflow_framework.so.1: cannot open shared object file: No such file or directory
尽管描述此问题的 bug 在 TensorFlow 1.14 版本中已被关闭,但该问题并未完全修复,仍需在构建脚本中添加一行代码。
一个简单的 solution 是在 Jar 的 Manifest 中添加 TensorFlow 版本信息。以下是用于创建 Fat Jar 的 Gradle 构建任务示例。
// build.gradle
task fatJar(type: Jar) {
manifest {
attributes 'Implementation-Version': '1.15'
}
classifier = 'all'
from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
// build.gradle.kts
plugins {
kotlin("jvm") version "1.5.31"
id("com.github.johnrengelman.shadow") version "7.0.0"
}
tasks{
shadowJar {
manifest {
attributes(Pair("Main-Class", "MainKt"))
attributes(Pair("Implementation-Version", "1.15"))
}
}
}
限制
目前仅支持有限的一组深度学习架构。以下是可用层的列表:
- 核心层:
Input、Dense、Flatten、Reshape、Dropout、BatchNorm。
- 卷积层:
Conv1D、Conv2D、Conv3D;Conv1DTranspose、Conv2DTranspose、Conv3DTranspose;DepthwiseConv2D;SeparableConv2D。
- 池化层:
MaxPool1D、MaxPool2D、MaxPooling3D;AvgPool1D、AvgPool2D、AvgPool3D;GlobalMaxPool1D、GlobalMaxPool2D、GlobalMaxPool3D;GlobalAvgPool1D、GlobalAvgPool2D、GlobalAvgPool3D。
- 合并层:
Add、Subtract、Multiply;Average、Maximum、Minimum;Dot;Concatenate。
- 激活层:
ELU、LeakyReLU、PReLU、ReLU、Softmax、ThresholdedReLU;ActivationLayer。
- 裁剪层:
Cropping1D、Cropping2D、Cropping3D。
- 上采样层:
UpSampling1D、UpSampling2D、UpSampling3D。
- 零填充层:
ZeroPadding1D、ZeroPadding2D、ZeroPadding3D。
- 其他层:
Permute、RepeatVector。
目前,层的实现使用的是 TensorFlow 1.15 Java API,但该项目将在不久的将来切换到 TensorFlow 2.x 及以上版本。不过,这并不影响高层 API。目前,TensorFlow 模型的推理仅支持在桌面端运行。
贡献
请阅读 贡献指南。
报告问题/支持
请使用 GitHub issues 提交功能请求和错误报告。你也可以加入 Kotlin Slack 中的 #kotlindl 频道。
行为准则
本项目及其相关社区受 JetBrains 开源与社区行为准则 约束,请务必阅读。
许可证
KotlinDL 采用 Apache 2.0 许可证 许可。
版本历史
v0.5.22023/05/22v0.6.0-alpha-12023/01/16v0.5.12023/01/14v0.5.02022/12/26v0.4.02022/06/09v0.3.02021/09/24v0.2.02021/05/14v0.1.12021/01/28v0.1.02020/12/08v0.0.142020/11/23常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器