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 许可证。

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

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

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

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多