Back to results
DuanYan007/markitdown(opens in a new tab)
Language: Java
markitdown:Cli;Lib; Java
- stars
- 863
- watchers
- 72
- forks
- 114
- open issues
- 1
- Last updated
- 05/16/2026
Language: Java
markitdown:Cli;Lib; Java
一个面向文档转 Markdown 的 Java 实现版本。项目以 CLI 和 Java Library 两种形态交付,定位为 Microsoft MarkItDown 的 Java 重写版本,并用于开源重写比赛场景。
| 项目 | 说明 |
|---|---|
| 当前版本 | 0.0.4 |
| 运行语言 | Java 11 |
| 交付形态 | 可执行 Shaded JAR + Java Library |
| OCR 引擎 | tesseract-cli、http、paddleocr |
| 主产物 | target/markitdown4j-0.0.4.jar |
| 许可证 | MIT |
当前仓库只描述和交付当前 Java 版本,项目定位包括:
markitdown4j 将多种输入内容转换为 Markdown,并通过两种产品形态暴露同一套核心能力:
| 引擎 | 适用场景 |
|---|---|
tesseract-cli |
本地安装 Tesseract 后进行跨平台 OCR |
http |
通过自定义 HTTP OCR 服务执行识别 |
paddleocr |
通过 PaddleOCR 任务接口执行识别 |
当前仓库交付的 CLI 产物为:
target/markitdown4j-0.0.4.jar
本文中的 markitdown4j 只是文档写法,等价于:
java -jar target/markitdown4j-0.0.4.jar
如果你没有自行创建别名或包装脚本,请直接使用 java -jar ... 形式执行。
mvn clean package
markitdown4j [options] <input...>
转换单个 PDF:
markitdown4j report.pdf -o output.md
批量转换目录中的支持文件:
markitdown4j ./docs --batch -o out/
转换远程文件:
markitdown4j https://example.com/report.pdf -o out/
启用 OCR 转换:
markitdown4j scan.pdf --ocr --ocr-engine tesseract-cli -o output.md
生成并检查配置:
markitdown4j --generate-config markitdown4j --validate-config markitdown4j --show-config
当前版本采用 YAML-first 配置模型。
可识别的配置文件包括:
markitdown.ymlmarkitdown.local.ymlmarkitdown.example.yml解析顺序为:
markitdown.ymlmarkitdown.local.yml完整配置说明、场景配置示例、校验规则和 CLI 覆盖行为请参考 configuration.md。
Library 不是附属功能,而是当前产品形态的一部分。
典型使用方式包括:
安装到本地仓库:
mvn clean install
Maven 坐标:
<dependency> <groupId>com.markitdown</groupId> <artifactId>markitdown4j</artifactId> <version>0.0.4</version> </dependency>
| 类型 | 作用 |
|---|---|
com.markitdown.core.MarkItDownEngine |
主转换入口 |
com.markitdown.config.ConversionOptions |
运行时转换选项 |
com.markitdown.api.ConversionResult |
包含 Markdown、metadata、warnings 和状态的结果对象 |
com.markitdown.api.DocumentConverter |
转换器扩展契约 |
com.markitdown.exceptions.ConversionException |
转换失败时的受检异常 |
com.markitdown.MarkItDownApplication |
提供 createEngine() 的便捷入口 |
MarkItDownEngine engine = MarkItDownApplication.createEngine(); try { ConversionOptions options = ConversionOptions.builder().build(); ConversionResult result = engine.convert(Path.of("report.pdf"), options); if (result.isSuccessful()) { System.out.println(result.getMarkdown()); } else { System.err.println(result.getWarnings()); } } finally { engine.shutdown(); }
try (InputStream input = /* your stream */) { ConversionResult result = engine.convert(input, "text/plain", options); }
ConversionOptions options = ConversionOptions.builder() .includeMetadata(true) .includeImages(true) .includeTables(true) .tableFormat("github") .imageFormat("markdown") .useOcr(true) .ocrEngine("tesseract-cli") .language("eng") .tesseractPath("O:/tesserOCR/tesseract.exe") .tessdataPath("O:/tesserOCR/tessdata") .maxFileSize(0) .build();
常用结果读取接口包括:
getMarkdown()getMetadata()getWarnings()isSuccessful()失败场景主要包括:
这类错误在 CLI 中会转换为面向用户的诊断信息,在 Library 中则可通过结果对象和异常处理逻辑进行控制。
当前 Library 还提供以下入口:
convertAsync(Path, ConversionOptions)convertAsync(InputStream, String, ConversionOptions)convertParallel(List<Path>, ConversionOptions)convertAll(List<Path>, ConversionOptions)boolean supportedPath = engine.isSupported(Path.of("input.pdf")); boolean supportedMime = engine.isSupported("application/pdf");
Engine 持有运行时资源。转换结束后应调用 shutdown() 释放资源,避免长生命周期进程中出现资源残留。
中文文档:
English documents:
tesseract-cli OCR,需要系统中安装 Tesseract 可执行程序| 形态 | 定位 | 说明 |
|---|---|---|
| CLI | 面向最终使用者 | 用于本地转换、自动化脚本和手工命令执行 |
| Java Library | 面向 Java 集成方 | 用于嵌入业务系统、工具链和后端服务 |