autocorrect

autocorrect

跨平台中英文混排格式自动纠正工具

AutoCorrect 是一个开源的文案纠正工具,使用 Rust 语言开发。它主要致力于改进中英文混排格式,包括自动添加空格、纠正标点符号和拼写检查等功能。该工具支持多种编程语言和文件格式,可以集成到持续集成环境、代码编辑器和其他应用中。AutoCorrect 旨在帮助开发者和内容创作者提升文案的规范性和专业性。

AutoCorrect文案纠正中英文混排标点符号代码检查Github开源项目
<p align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/42ceee18-97c8-46b3-8fd2-f1135e40c6a5.png" alt="AutoCorrect 图标" width="128" height="128" /> <h1 align="center">AutoCorrect</h1> <p align="center"> <a href="https://github.com/huacnlee/autocorrect/actions?query=workflow%3ACI"><img src="https://yellow-cdn.veclightyear.com/835a84d5/bdb8f9ea-2879-4bb7-8216-46530334e385.svg" alt="Go"></a> <a href="https://github.com/huacnlee/autocorrect/releases"><img src="https://img.shields.io/github/v/release/huacnlee/autocorrect?label=CLI&color=blue" alt="GitHub 最新版本"></a> <a href="https://hub.docker.com/r/huacnlee/autocorrect"><img src="https://img.shields.io/docker/v/huacnlee/autocorrect?label=Docker&color=blue" alt="Docker 镜像最新版本"></a> <a href="https://crates.io/crates/autocorrect"><img src="https://img.shields.io/crates/v/autocorrect?color=1t&label=Crate" alt="Crates.io"></a> <a href="https://www.npmjs.com/package/@huacnlee/autocorrect"><img src="https://img.shields.io/npm/v/@huacnlee/autocorrect?color=1t&label=NPM" alt="NPM"></a> <a href="https://pypi.org/project/autocorrect-py/"><img src="https://img.shields.io/pypi/v/autocorrect-py?color=1&label=PyPI" alt="PyPI 版本"></a> <a href="https://rubygems.org/gems/autocorrect-rb"><img src="https://img.shields.io/gem/v/autocorrect-rb?color=1&label=Gem" alt="Gem 版本"></a> <a href="https://repo1.maven.org/maven2/io/github/huacnlee/autocorrect-java/"><img alt="Maven Central" src="https://img.shields.io/maven-central/v/io.github.huacnlee/autocorrect-java?color=1&label=Maven"></a> </p> </p>

🎯 AutoCorrect 的愿景是提供一套标准化的文案纠正方案。以便于在各类场景(例如:撰写书籍、文档、内容发布、项目源代码...)里面应用,让使用者轻松实现标准化、专业化的文案输出 / 校正。

AutoCorrect 是一个用于改进文案、纠正 CJK(中文、日语、韩语)与英文之间的空格、单词和标点符号的检查工具和格式化工具。

类似于 Eslint、Rubocop 和 Gofmt 等工具,AutoCorrect 允许我们检查源代码,并以彩色差异形式输出纠正建议。你可以将其集成到 CI(GitLab CI、GitHub Action、Travis CI 等)中,用于检查源代码中的内容。它能识别文件名,并找出字符串和注释部分。

AutoCorrect 是一个基于 Rust 编写的工具,用于"自动纠正"或"检查并建议"文案,为 CJK(中文、日语、韩语)与英文混写的场景补充正确的空格,纠正单词,同时尝试以安全的方式自动纠正标点符号等等。

类似 ESlint、Rubocop、Gofmt 等工具,AutoCorrect 可以用于 CI 环境,它提供 Lint 功能,能便捷地检测出项目中有问题的文案,起到统一规范的作用。

支持各种类型源代码文件,能自动识别文件名,并准确找到字符串、注释做自动纠正。

此方案最早于 2013 年出现于 Ruby China 的项目,并逐步完善规则细节,当前准确率较高(极少数异常情况),你可以放心用来辅助你完成自动纠正动作。

<img width="920" alt="autocorrect lint 输出" src="https://yellow-cdn.veclightyear.com/835a84d5/c16f6933-d9ed-45b8-92d4-2a3637620b90.png">

功能特性

  • 在 CJK(中文、日语、韩语)和英文单词之间添加空格。
  • 将 CJK 附近的标点符号纠正为全角。
  • 将英文内容中的标点符号纠正为半角。
  • (实验性)根据你的字典进行拼写检查和单词纠正。
  • Lint 检查并输出差异或 JSON 结果,因此你可以在任何地方集成(GitLab CI、GitHub Action、VS Code、Vim、Emacs...)。
  • 允许使用 .gitignore 或 .autocorrectignore 来忽略你想忽略的文件。
  • 支持超过 28 种文件类型(Markdown、JSON、YAML、JavaScript、HTML 等),使用 AST 解析器仅检查字符串和注释。
  • LSP 服务器:autocorrect-lsp
  • 跨平台支持 Linux、macOS、Windows 和 WebAssembly,并作为原生 SDK 用于编程(Node.js、JavaScript 浏览器、Ruby、Python、Java)。

典型应用场景

  • 撰写书籍、文档,新闻媒体等内容发布,应用于 Markdown、AsciiDoc、HTML 等文档场景,确保文案的标准化、专业化(案例:MDN 项目、少数派)。
  • 集成 GitLab CI、GitHub Action、Travis CI 等 CI 环境,需要对项目进行自动化检查。
  • 集成到 Docusaurus、Hexo、Hugo、Jekyll、Gatsby 等静态网站生成器,在生成的时候自动格式化。
  • 利用语言支持的 SDK 集成到应用程序,在存储或输出网站内容的时候格式化,提升网站品质(如:Ruby China、V2EX、Longbridge)。
  • 作为 VS Code、Intellij Platform IDE(已支持)、Vim、Emacs(待实现)插件,需要对文案进行检查(Linter & Formatter),依靠 LintResult 给出的(Annotator、Diagnostic)提示。
  • 基于 WebAssembly 实现,作为 Chrome、Safari 等浏览器插件,应用于任何网站(待实现)
  • 也可以集成到 WYSIWYG 编辑器里面,例如(ProseMirror、CKEditor、Slate、Draft.js、Tiptap、Monaco Editor、CodeMirror 等)。

安装

<details> <summary>在 macOS 上安装</summary>

你可以通过 Homebrew 安装:

$ brew install autocorrect
</details> <details> <summary>在 Windows 上安装</summary>

你可以通过 Scoop 安装:

$ scoop install autocorrect
</details>

或者你可以在类 Unix 系统上通过以下方式安装:

$ curl -sSL https://git.io/JcGER | sh

安装完成后,你将获得 autocorrect 命令。

$ autocorrect -V AutoCorrect 2.4.0

或通过 NPM 安装:

$ yarn add autocorrect-node $ yarn autocorrect -V

升级

自:1.9.0 版本

AutoCorrect 允许你通过 autocorrect update 命令自行升级。

$ autocorrect update

注意:此命令需要你输入密码,因为它会将二进制文件安装到 /usr/local/bin 目录。

使用方法

在命令行中使用

$ autocorrect text.txt 你好 Hello 世界 $ echo "hello世界" | autocorrect --stdin hello 世界 $ autocorrect --fix text.txt $ autocorrect --fix zh-CN.yml $ autocorrect --fix

Lint

$ autocorrect --lint --format json text.txt $ autocorrect --lint text.txt
错误: 1, 警告: 0 text.txt:1:3 -你好Hello世界 +你好 Hello 世界

你也可以检查多个文件:

$ autocorrect --lint

如何检查 Git 中所有变更的文件:

$ git diff --name-only | xargs autocorrect --lint

在 NPM 中使用

自版本: 2.7.0

AutoCorrect 已发布到 NPM 并支持 CLI 命令。如果你想在前端或 Node.js 项目中使用它,只需安装 autocorrect-node 包,无需安装 AutoCorrect 二进制文件。

cd your-project yarn add autocorrect-node

现在你可以在项目中运行 yarn autocorrect 命令。该命令与 autocorrect 命令相同。

$ yarn autocorrect -h

更多文档: autocorrect-node/README.md

配置

默认配置: .autocorrect.default

$ autocorrect init AutoCorrect 初始化配置: .autocorrectrc

注意: 如果下载失败,请尝试再次使用 autocorrect init --local 命令。

现在 .autocorrectrc 文件已创建。

.autocorrectrc 允许使用 YAML、JSON 格式。

配置文件示例:

# yaml-language-server: $schema=https://huacnlee.github.io/autocorrect/schema.json # 配置规则 rules: # 在 CJK (中文、日文、韩文) 和英文单词之间自动添加空格。 # 0 - 关闭, 1 - 错误, 2 - 警告 space-word: 1 # 在某些标点符号之间添加空格。 space-punctuation: 1 # 在括号 (), [] 附近的 CJK 之间添加空格。 space-bracket: 1 # 在反引号 `` 附近的 CJK 之间添加空格。 space-backticks: 1 # 在破折号 `-` 之间添加空格 space-dash: 0 # 转换为全角。 fullwidth: 1 # 移除全角附近的空格。 no-space-fullwidth: 1 # 全角字母数字字符转换为半角。 halfwidth-word: 1 # 英文中的全角标点转换为半角。 halfwidth-punctuation: 1 # 拼写检查 spellcheck: 2 # 在特定上下文中启用或禁用 context: # 启用或禁用格式化 Markdown 或 AsciiDoc 等中的代码块。 codeblock: 1 textRules: # 为某些文本配置特殊规则 # 例如,如果我们想让 "Hello你好" 只给出警告,而忽略 "Hi你好" # "Hello你好": 2 # "Hi你好": 0 fileTypes: # 配置文件关联,你的配置优先级高于默认设置。 # "rb": ruby # "Rakefile": ruby # "*.js": javascript # ".mdx": markdown spellcheck: # 拼写检查的正确单词 (不区分大小写) words: - GitHub - App Store # 这意味着将 "appstore" 转换为 "App Store" - AppStore = App Store - Git - Node.js - nodejs = Node.js - VIM - DNS - HTTP - SSL

忽略选项

自版本: 2.2.0

当你想配置一些特殊单词或文本以在格式化或检查时忽略时。

textRules 配置可以帮助你。

例如,我们想:

  • Hello世界 - 只给出警告。
  • Hi你好 - 忽略。

你可以配置:

textRules: Hello世界: 2 Hi你好: 0

之后,AutoCorrect 将按照你的 textRules 进行处理。

忽略文件

使用 .autocorrectignore 忽略文件

有时,你可能想忽略一些不想检查的特殊文件。

默认情况下,匹配 .gitignore 规则的文件将被忽略。

你也可以使用 .autocorrectignore 忽略其他文件,格式类似 .gitignore

通过内联注释禁用

如果你只想禁用文件中的某些特殊行,可以写一个包含 autocorrect-disable 的注释, 当 AutoCorrect 匹配到包含该内容的注释时,它将暂时禁用。

然后,你可以使用 autocorrect-enable 重新启用它。

例如,在 JavaScript 中:

function hello() { // autocorrect-disable console.log("现在这行开始autocorrect会暂时禁用"); console.log("这行也是disable的状态"); // autocorrect-enable let a = "现在起autocorrect回到了启用的状态"; }

输出将是:

function hello() { // autocorrect-disable console.log("现在这行开始autocorrect会暂时禁用"); console.log("这行也是disable的状态"); // autocorrect-enable let a = "现在起 autocorrect 回到了启用的状态"; }

禁用某些规则

自版本: 2.0

你可以在注释中使用 autocorrect-disable <rule> 来禁用某些规则。

规则名称请参见: 配置

function hello() { // autocorrect-disable space-word console.log("现在这行开始autocorrect会暂时禁用."); // autocorrect-disable fullwidth console.log("这行也是disable的状态."); // autocorrect-enable let a = "现在起autocorrect回到了启用的状态."; }

将得到:

function hello() { // autocorrect-disable space-word console.log("现在这行开始autocorrect会暂时禁用。"); // autocorrect-disable fullwidth, space-word console.log("这行也是disable的状态."); // autocorrect-enable let a = "现在起 autocorrect 回到了启用的状态。"; }

VS Code 扩展

安装扩展

https://marketplace.visualstudio.com/items?itemName=huacnlee.autocorrect

内置 Visual Studio Code 插件,安装后会将 AutoCorrect 和 Visual Studio Code 完整集成,可以达到"保存自动格式化"或"纠正提示"。

如下图:

<img width="900" alt="AutoCorrect for VS Code Extension" src="https://yellow-cdn.veclightyear.com/835a84d5/21a6e7dc-13a9-42ea-b587-a8f09dda40e6.png">

Intellij Platform 插件

<img width="900" alt="AutoCorrect for Intellij Platform Plugin" src="https://yellow-cdn.veclightyear.com/835a84d5/9316bd8f-fc62-4ac1-8647-0095a967581f.png">

https://github.com/huacnlee/autocorrect-idea-plugin

GitHub Action

https://github.com/huacnlee/autocorrect-action

添加到你的 .github/workflows/ci.yml

steps: - name: 检查源代码 uses: actions/checkout@v3 - name: AutoCorrect uses: huacnlee/autocorrect-action@main

GitLab CI

添加到你的 .gitlab-ci.yml,使用 huacnlee/autocorrect Docker 镜像进行检查。

autocorrect: stage: build image: huacnlee/autocorrect:latest script: - autocorrect --lint # 如果需要,启用 allow_failure。 # allow_failure: true

与 ReviewDog 配合使用

自版本: 2.8.0

AutoCorrect 可以与 reviewdog 配合使用,因此你可以在 CI/CD 中使用它。ReviewDog 会在你的 PR 中发表评论,提供 AutoCorrect 的更改建议。然后 PR 提交者可以轻松接受这些建议。

使用 --format rdjson 选项以 reviewdog 支持的格式输出检查结果。

autocorrect --lint --format rdjson | reviewdog -f=rdjson -reporter=github-pr-review

使用 huacnlee/autocorrect-action 可以帮助你设置 GitHub Action。

<img src="https://yellow-cdn.veclightyear.com/835a84d5/ece70b46-93fd-463a-b913-156a48ac0891.png" width="640" />

用于编程

AutoCorrect 旨在支持多种编程语言。

基准测试

MacBook Pro(13英寸,M1,2020年)

使用 make bench 运行基准测试。

详情请参见 autocorrect/src/benches/example.rs

format_050 时间: [8.2420 µs 8.2657 µs 8.2937 µs] format_100 时间: [14.199 µs 14.246 µs 14.298 µs] format_400 时间: [40.511 µs 41.923 µs 43.798 µs] format_html 时间: [204.94 µs 208.61 µs 214.07 µs] halfwidth_english 时间: [2.4983 µs 2.5541 µs 2.6293 µs] format_json 时间: [54.037 µs 57.023 µs 61.821 µs] format_javascript 时间: [102.81 µs 104.41 µs 106.92 µs] format_json_2k 时间: [8.7609 ms 8.9099 ms 9.1201 ms] format_jupyter 时间: [81.765 µs 83.038 µs 85.321 µs] format_markdown 时间: [879.27 µs 894.86 µs 918.30 µs] spellcheck_50 时间: [1.6012 µs 1.6122 µs 1.6306 µs] spellcheck_100 时间: [3.0968 µs 3.1696 µs 3.2653 µs] spellcheck_400 时间: [10.136 µs 10.478 µs 10.898 µs] lint_markdown 时间: [937.57 µs 942.59 µs 949.15 µs] lint_json 时间: [59.174 µs 60.302 µs 61.763 µs] lint_html 时间: [238.03 µs 241.38 µs 245.77 µs] lint_javascript 时间: [111.64 µs 113.05 µs 114.82 µs] lint_yaml 时间: [348.56 µs 350.11 µs 352.80 µs] lint_to_json 时间: [941.25 µs 948.95 µs 958.26 µs] lint_to_diff 时间: [1.0573 ms 1.0823 ms 1.1134 ms]

真实世界基准测试

使用 MDN 翻译内容 项目,它包含约30K个文件。

~/work/translated-content $ autocorrect --fix AutoCorrect 耗时:8402.538ms

其他扩展

来自社区的其他实现。

使用案例

许可证

本项目采用 MIT 许可证。

编辑推荐精选

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

下拉加载更多