pyLanguagetool¶
A python library and CLI for the LanguageTool JSON API.
LanguageTool is an open source spellchecking platform. It supports a large variety of languages and has advanced grammar support.

Installation¶
pyLanguagetool can be installed with pip/pipenv:
pip install pylanguagetool
# or via pipenv
pipenv install pylanguagetool
Basic Usage¶
# pipe text to pylanguagetool
echo "This is a example" | pylanguagetool
# read text from a file
pylanguagetool textfile.txt
# read text from stdin
pylanguagetool < textfile.txt
# read text from the systems clipboard
pylanguagetool -c # get text from system clipboard
All samples above will return a list of detected errors and possible replacements.
# Use "an" instead of 'a' if the following word starts with a vowel sound, e.g. 'an article', 'an hour'
# ✗ This is a example
# ^
# ✓ This is an example
Configuration¶
All LanguageTool API parameters can be set via command line arguments,
environment variables or a configuration file
(~/.config/pyLanguagetool.conf
) For more information about the
configuration file syntax, read the ConfigArgParse documentation.
Parameters¶
$ pylanguagetool --help
usage: pylanguagetool [-h] [-v] [-a API_URL] [--no-color] [-c] [-s]
[-t {txt,html,md,rst,ipynb}] [-l LANG]
[-m MOTHER_TONGUE] [-p PREFERRED_VARIANTS]
[-e ENABLED_RULES] [-d DISABLED_RULES]
[--enabled-categories ENABLED_CATEGORIES]
[--disabled-categories DISABLED_CATEGORIES]
[--enabled-only] [--pwl PWL]
[input file]
Args that start with '--' (eg. -v) can also be set in a config file
(~/.config/pyLanguagetool.conf). Config file syntax allows: key=value,
flag=true, stuff=[a,b,c] (for details, see syntax at
https://pypi.org/project/ConfigArgParse/). If an arg is specified in more than
one place, then commandline values override environment variables which
override config file values which override defaults.
positional arguments:
input file input file
optional arguments:
-h, --help show this help message and exit
-v, --verbose [env var: VERBOSE]
-a API_URL, --api-url API_URL
the URL of the v2 languagetool API, should end with
'/v2/' [env var: API_URL]
--no-color don't color output [env var: NO_COLOR]
-c, --clipboard get text from system clipboard [env var: CLIPBOARD]
-s, --single-line check every line on its own [env var: SINGLE_LINE]
-t {txt,html,md,rst,ipynb}, --input-type {txt,html,md,rst,ipynb}
if not plaintext [env var: CLIPBOARD]
-r, --rules show the matching rules [env var: RULES]
--rule-categories show the the categories of the matching rules [env
var: RULE_CATEGORIES]
-l LANG, --lang LANG A language code like en or en-US, or auto to guess the
language automatically (see preferredVariants below).
For languages with variants (English, German,
Portuguese) spell checking will only be activated when
you specify the variant, e.g. en-GB instead of just
en. [env var: TEXTLANG]
-m MOTHER_TONGUE, --mother-tongue MOTHER_TONGUE
A language code of the user's native language,
enabling false friends checks for some language pairs.
[env var: MOTHER__TONGUE]
-p PREFERRED_VARIANTS, --preferred-variants PREFERRED_VARIANTS
Comma-separated list of preferred language variants.
The language detector used with language=auto can
detect e.g. English, but it cannot decide whether
British English or American English is used. Thus this
parameter can be used to specify the preferred
variants like en-GB and de-AT. Only available with
language=auto. [env var: PREFERRED_VARIANTS]
-e ENABLED_RULES, --enabled-rules ENABLED_RULES
IDs of rules to be enabled, comma-separated [env var:
ENABLED_RULES]
-d DISABLED_RULES, --disabled-rules DISABLED_RULES
IDs of rules to be disabled, comma-separated [env var:
DISABLED_RULES]
--enabled-categories ENABLED_CATEGORIES
IDs of categories to be enabled, comma-separated [env
var: ENABLED_CATEGORIES]
--disabled-categories DISABLED_CATEGORIES
IDs of categories to be disabled, comma-separated [env
var: DISABLED_CATEGORIES]
--enabled-only enable only the rules and categories whose IDs are
specified with --enabled-rules or --enabled-categories
--pwl PWL, --personal-word-list PWL
File name of personal dictionary. A private dictionary
can be used to add special words that would otherwise
be marked as spelling errors. [env var:
PERSONAL_WORD_LIST]
Privacy¶
By default, pyLanguagetool sends all text via HTTPS to the LanguageTool
server (see their privacy policy). You can also set up your own server and
use it by changing the --api-url
attribute.
All Contents¶
Contents:
- API Reference
- Changelog
- 0.9.2 (2021-10-05)
- 0.9.1 (2020-10-01)
- 0.9.0 (2020-01-23)
- 0.8.4 (2019-11-15)
- 0.8.3 (2019-09-20)
- 0.8.2 (2019-09-19)
- 0.8.1 (2019-09-19)
- 0.8.0 (2019-07-19)
- 0.7.1 (2019-06-14)
- 0.7.0 (2019-05-17)
- 0.6.3 (2019-01-19)
- 0.6.2 (2019-01-18)
- 0.6.1 (2018-02-28)
- 0.6.0 (2017-12-29)
- 0.5.1 (2017-10-27)
- 0.5.0 (2017-09-06)
- 0.4.3 (2017-05-24)
- 0.4.2 (2017-05-24)
- 0.4.1 (2017-01-28)
- 0.4.0 (2017-01-28)
- 0.3.1 (2017-01-25)
- 0.3.0 (2017-01-25)
- 0.2.1 (2017-01-24)
- 0.2.0 (2017-01-23)
- 0.1.1 (2017-01-23)
- 0.0.5 (2017-01-21)
- 0.0.4 (2017-01-20)
- 0.0.3 (2017-01-20)
- 0.0.2 (2017-01-19)