Skip to main content
CLI 适合手边立刻处理文件;SDK 适合把解析能力放进你的程序。两条路通向同一个目标。想先看定位差异,可先回到 SoMark CLI & SDK 概览

1. 安装

SoMark 有 Python 和 JavaScript 两个实现。你用哪门语言,就装哪个包。两个包都同时提供 SDK 和 somark CLI 命令。建议先确认本机版本:Python 需要 3.10+,Node.js 需要 18+。
如果 somark 命令找不到,通常不是包没装好,而是命令目录没有进 PATH。Python 用户可以先试 python -m somark.cli.main --help;Node 用户可以先试 npx somark-js --help。能跑起来,再考虑把全局命令路径整理好。
如果同时安装了 Python 和 JS 两个版本,CLI中采用的是先安装的那个,另一个版本在安装的时候碰到 CLI 已经安装的情况会跳过安装。想要看当前是什么语言的版本,可以运行 somark --help,在最后会有 [PY][JS] 的标识。

2. 认证与配置

远程解析和用量查询需要 API Key。本地 PDF 处理和 SoMarkDown 预览不需要。你可以用 CLI 保存配置,也可以在 SDK 初始化时直接传参。
如果项目里习惯用 .env,可以把 SOMARK_API_KEY=sk-your-api-key 放进去,再用 python-dotenvdotenv 或你自己的启动脚本加载。SoMark 读取的是环境变量本身,不会替你决定怎么加载 .env。另外,别把 .env 提交到 Git。
入口:somark loginsomark config ...,或在命令参数和环境变量里传配置。命令参数 / 环境变量
SOMARK_PARSE_MAX_CONCURRENCY 默认必须保持为 1。官方默认给所有用户的解析并发额度也是 1;只有已经明确获批更高并发的用户,才应该把它设置为 2 或更高。CLI 在检测到 2 或更高时会通过 warning 通道提示。这是本地 warning,不来自 API。
配置文件字段优先级:命令参数 > 环境变量 > 配置文件 > 默认值。

3. Warnings

SoMark 的 warning 分两类:API warning 和本地 warning。API warning 来自响应顶层 warnings: List[str] 字段,和 codemessage 同级。本地 warning 来自 SDK 或 CLI 自己的运行判断,例如批量解析并发设置超过默认额度。 CLI 默认会显示 SoMark warning。需要安静输出时,用全局参数 --no-warnings
CLI
--no-warnings 只关闭 warning 的显示,不改变命令结果、退出码,也不会删除 SDK 返回对象里的 warnings 字段。 SDK 默认通过语言原生 warning 通道显示 warning,同时把 warning 字符串保留在返回对象的 warnings 字段中。空数组表示没有 warning。

4. 解析

解析是 SoMark SDK + CLI 的主线任务。你把文件交给 SoMark,它把结果还给你:Markdown、JSON,或者 ZIP 下载地址。默认输出格式是 md,也就是 API 里的 markdown 这里有两种用法:同步解析和异步解析。 同步解析适合“我现在就要结果”的场景。CLI 或 SDK 会把文件发到 /parse/sync,然后等服务端把结果返回。代码少,心智负担低,适合单个文件、脚本、调试和中小文档。缺点也很直白:文件越大,你等得越久。 异步解析适合大文件、批处理和后台任务。你先把文件发到 /parse/async,马上拿到一个 task_id;之后用 task_id/parse/async_check 查进度。CLI 的 --wait 和 SDK 的 task.wait() 本质上就是帮你定时轮询。它更适合放进队列、定时任务或服务端流程里。 同步解析流程 一次请求直接拿结果。适合脚本、调试和中小文件。
异步解析流程 先提交任务,再用 task_id 查状态。适合大文件、批处理和后台队列。

4.1 同步解析

同步解析最适合先把流程跑通:给一个文件,等结果,保存到本地。你可以先从 md 开始,确认内容质量,再按需加 jsonzip 或页面特征配置。
入口:somark parse [files...]返回处理--out 只表示输出目标,不表示“帮我创建目录”,也不表示“把文件名当模板”。这样脚本里更容易预测结果。多文件执行

4.2 异步解析

异步解析适合大文件和批处理。先提交任务,拿到 task_id;稍后轮询,直到成功或失败。推荐轮询间隔 3 到 5 秒,别太频繁,服务器也需要安静工作。
入口:somark parse [files...] --async 提交任务;somark parse --task-id task_xxx 查询任务。提交任务:somark parse [files...] --async多文件异步提交时,每个文件会得到独立的 task_id。CLI 会显示每个文件的存在性、提交状态、用时和任务 ID。查询 / 等待任务:somark parse --task-id task_xxx

5. 用量查询

用量查询会返回当前 API Key 的剩余额度和控制台地址。它也可以顺手检查 API Key 是否有效。
入口:somark usage命令参数输出字段

6. SoMarkDown 服务

SoMarkDown 服务会在本地启动一个预览服务器,用浏览器打开 .md.smd 文件。它不需要 API Key,也不消耗额度。底层渲染能力来自 SoMarkAI/SoMarkDown,需要看语法和渲染器细节时可以直接跳过去。
JavaScript SDK 还额外导出 SoMarkDown。它不启动本地 HTTP 服务,直接把 Markdown / SoMarkDown 字符串渲染成 HTML;适合在 Node 服务、自定义前端或小工具里接入渲染结果。
JavaScript
入口:somark preview [file]输出字段停止服务:在终端按 Ctrl+C。

7. PDF 处理

PDF 处理目前提供本地 PDF 转图片。它适合做预览图、调试页面布局,或者把 PDF 页面交给别的视觉处理流程。Python 侧的本地 PDF 能力基于 SoMarkAI/SoPDF
入口:somark pdf toimg <file>输出字段

8. Doctor 自动修复

Doctor 用来检查安装状态、网络、API Key 和本地预览资源。它是命令行里的体检表,不治百病,但能发现不少低级事故。
CLI
Doctor 是 CLI 维护命令,SDK 不提供对应资源。写程序时通常不需要它;遇到命令跑不起来、预览打不开、网络不确定时,再请它出场。 更底层的接口、字段和响应结构,请看 API Reference。它由同一套接口规范生成,少一点手写,多一点可靠。