SVG 文字生成器 API 文档

功能概述

这个 API 提供了生成防 OCR SVG 文本的功能,可以生成带有各种变形、噪点和颜色效果的文本图像, 使其难以被自动文字识别系统识别,同时保持人眼可读性。生成的 SVG 支持自定义宽度、字体大小、 文字效果和颜色模式等。

示例效果

深色文字 (Dark Mode)

深色文字示例

深色系文字,适合在浅色背景使用

浅色文字 (Light Mode)

浅色文字示例

浅色系文字,适合在深色背景使用

全彩色文字 (Colorful)

全彩色文字示例

每个字符可能使用不同的鲜艳颜色

自定义颜色 (Custom Colors)

自定义颜色文字示例

使用预定义的几种颜色

黑色无变形 (Plain Black)

黑色无变形文字示例

纯黑色文字,无变形效果,最易阅读

HTTP REST API 接口规范

服务遵循统一的 RESTful API 规范,所有 JSON 响应均包含 status 状态码以及 success: true/false 业务状态标记。

1. 健康检查接口

GET /health

响应示例 (HTTP 200):

{ "success": true, "status": 200, "message": "Service is healthy", "service": "svg-text-nodejs", "version": "1.0.0", "timestamp": "2026-10-06T08:00:00.000Z", "uptime": 128 }

2. 文本加密调试接口

GET /api/encrypt?text=要加密的文本

响应示例 (HTTP 200):

{ "success": true, "status": 200, "originalText": "要加密的文本", "encryptedData": "3f8a...:9c2b...", "previewUrl": "/api/svg?data=3f8a...%3A9c2b...&width=375&theme=dark", "data": { "originalText": "要加密的文本", "encryptedData": "3f8a...:9c2b...", "previewUrl": "/api/svg?data=3f8a...%3A9c2b...&width=375&theme=dark" } }

错误响应示例 (HTTP 400):

{ "success": false, "status": 400, "message": "缺少必要参数: 请提供要加密的明文 (GET ?text=xxx)", "error": "缺少必要参数: 请提供要加密的明文 (GET ?text=xxx)" }

3. 防 OCR SVG 渲染接口

GET /api/svg?data={加密字符串}&width=375&theme=dark

成功响应: HTTP 200,Content-Type: image/svg+xml,直接返回矢量 SVG 图像文本,支持直接作为 <img src="/api/svg?data=..."> 引用。

异常响应 (HTTP 400):

{ "success": false, "status": 400, "message": "非法请求:数据解密失败", "error": "非法请求:数据解密失败" }

Node.js 模块底层使用方法

首先引入模块:

const { generateAntiOcrSvg } = require('./svg');

基本用法示例:

generateAntiOcrSvg({ text: '这是一段示例文本内容', width: 500, fontSize: 30, colorMode: 'dark', distortionLevel: 5, outputPath: 'output.svg' }).then(result => { console.log('SVG 生成成功,尺寸:', result.width, 'x', result.height); });

获取 SVG 内容但不生成文件:

generateAntiOcrSvg({ text: '这是一段示例文本内容', width: 500, fontSize: 30, colorMode: 'dark' }).then(result => { const svgContent = result.svg; // 可以直接使用 svgContent 字符串,比如嵌入到 HTML 中 });

参数说明

参数名 类型 必填 默认值 说明
text string 是 - 要显示的文本内容
width number 是 600 SVG 宽度,用于计算换行位置
fontPath string 否 './fonts/NotoSansSC-Regular.ttf' 字体文件路径
fontSize number 否 30 字体大小
lineHeight number 否 1.4 行高倍数(相对于字体大小)
padding number 否 20 内边距
colorMode string 否 'dark' 颜色模式:'dark'(深色系), 'light'(浅色系), 'colorful'(全彩), 'custom'(自定义色系), 'black'(黑色)
customColors array 否 [] 自定义颜色数组,当 colorMode 为 'custom' 时使用,格式: ['rgb(0,0,0)', '#ff0000', ...]
distortionLevel number 否 5 变形程度: 0-10,0 表示无变形
enableNoise boolean 否 true 是否启用噪点
noiseColor string 否 'auto' 噪点颜色,'auto'(自动匹配), 或具体颜色如 '#f6f6f6'
noiseDensity number 否 500 噪点密度,数值越大噪点越少
enableFilter boolean 否 true 是否启用 SVG 滤镜效果
outputPath string 否 null 输出文件路径,不提供则不保存文件,仅返回 SVG 内容

返回值

函数返回一个 Promise,解析为包含以下属性的对象:

属性名 类型 说明
svg string 生成的 SVG 内容文本
width number 生成的 SVG 宽度
height number 生成的 SVG 高度

注意事项