Textgears API позволяет интегрировать самые современные технологии
анализа текста в любой продукт. От простых мобильных приложений
до громоздких энтерпрайз разработок.
API позволяет гибко проверять текст на все виды ошибок,
определять читабельность текста, оценивать примерный словарный запас
автора, и многое другое.
Что умеет API?
- Проверка грамматики
- Проверка орфографии
- Автокоррекция
- Читабельность
- Анализ текста
- Определение языка
- Суммаризация текста
- Определение ключевых слов
Документация для Postman
Вы можете скачать файл документации для Postman или других программ отладки HTTP-запросов. В Postman можно задать ключ сразу для всех запросов во вкладке Variables в настройках коллекции..
Download TextGears.postman.json
С чего начать
Все просто. API доступно для обычных запросов по протоколам HTTP и HTTPS.
Формат выходных данных — JSON.
Все запросы делаются к серверу api.textgears.com
Чтобы ускорить доступ из разных уголков мира мы расположили сервера
в 3 странах: США, Эстония и Сингапур. При отправке запроса на api.textgears.com
будет выбрал ближайший кластер. Но вы можете явно делать запросы к ближайшему к вам кластеру
чтобы точно уменьшить задержку получения ответа.
https://eu.api.textgears.com
– Europe
https://us.api.textgears.com
– America
https://sg.api.textgears.com
– Asia
Все эндпойнты API — это независимые кластеры серверов.
Мы гарантируем работоспобосность каждого из них на уровне 99.9%.
Если это кажется вам недостаточным, вы можете менять кластер при возникновении ошибки подключения.
-
Javascript
import textgears from 'textgears-api';
const textgearsApi = textgears('YOUR_KEY', {language: 'en-US'});
textgearsApi.checkGrammar('I is a engineer')
.then((data) => {
for (const error of data.errors) {
console.log('Error: %s. Suggestions: %s', error.bad, error.better.join(', '));
}
})
.catch((err) => {});
Javascript library
Если вы реализовали библиотеку для работы с API на другом языке
или для другого фреймворка,
пришлите нам ссылку
на GitHub или GitLab
— мы с удовольствием ее опубликуем.
Поддерживаемые языки
TextGears анализирует текст не только с учетом языка текста,
но и диалекта. Полный список поддерживаемых языков: английский, французский, немецкий, португальский, итальянский, испанский, русский, японский, китайский, арабский, греческий
Поддерживаемые диалекты (передаеются в параметре language
): en-US, en-GB, en-ZA, en-AU, en-NZ, fr-FR, de-DE, de-AT, de-CH, pt-PT, pt-BR, it-IT, ru-RU, ar-AR, es-ES, ja-JP, zh-CN, el-GR
Авторизация и передача параметров
Авторизация запроса происходит посредством передачи вашего ключа
среди прочих параметров запроса одним из перечисленных способов:
- POST parameter
key
-
GET parameter
key
?key=YOURKEY
-
Json-request
{ "key": "YOURKEY", // Other params }
-
HTTP Header
Authorization: Basic YOURKEY
Где YOURKEY — ваш ключ.
Коды ошибок
В случае ошибки параметр status
будет false
{
status : false,
error_code : 600, // API error code
description : "Invalid license key. Go to https://textgears.com/signup.php to get one"
}
- 600 — Некорректный ключ
- 606 — Неподдерживаемый язык
- 607 — Превышено разрешенное количество запросов
- 500 — Неизвестная внутренняя ошибка сервиса
- 501 — Длина текста превышает ограничение тарифа
API проверки текста
Проверка грамматики текста
https://api.textgears.com/grammar
Метод позволяет проверить текст на грамматические, орфографические, пунктуационные и стилистические ошибки.
Параметры запроса
Параметр | Пример | Описание |
---|---|---|
text | Текст в кодировке UTF-8. Лучше отправлять голый текст без HTML-тегов с некорректных UTF-8 символов. Мавсимальная длина ограничена параметрами вашего тарифного плана. | |
language |
Код языка. Необязательный параметр, значение по-умолчанию en-US . Список поддерживаемых кодов
|
|
whitelist |
Необязательный параметр. Массив слов, которые не нужно считать ошибками. |
|
dictionary_id |
Необязательный параметр. id словаря с кастомными правилами проверки. Создание и редактирование словарей. |
|
ai | true , false , 1 , 0 . Использовать TextGears AI для улучшения качества анализа текста.Важно! Работает не для всех языков. Запросы AI считаются отдельно, обратите внимание на их количество для каждого тарифа. |
|
key | Ваш API-ключ. Нет ключа? Получить в один клик!. |
Пример запроса
https://api.textgears.com/grammar?key=DEMO_KEY&text=I+is+an+engeneer!&language=en-GB
Отправить запрос
Результат будет показан ниже
Ответ сервера
{
status : true, // false in case of checking error
response : {
errors : [ // array of errors info
0 : {
id : "e492411846", // unique error id
offset : 2, // error text offset
length : 2, // error text length
bad : "is", // error text
better : [ // array of suggestions
0 : "am"
],
type : "grammar"
},
1 : {
id : "e627659964", // unique error id
offset : 8, // error text offset
length : 8, // error text length
bad : "engeneer", // error text
better : [ // array of suggestions
0 : "engineer",
1 : "engender"
],
type : "spelling"
}
]
}
}
Проверка орфографии текста
https://api.textgears.com/spelling
Метод проверяет текст по актуальному словарю на опечатки
Параметры запроса
Параметр | Пример | Описание |
---|---|---|
text | Текст в кодировке UTF-8. Лучше отправлять голый текст без HTML-тегов с некорректных UTF-8 символов. Мавсимальная длина ограничена параметрами вашего тарифного плана. | |
language |
Код языка. Необязательный параметр, значение по-умолчанию en-US . Список поддерживаемых кодов
|
|
whitelist |
Необязательный параметр. Массив слов, которые не нужно считать ошибками. |
|
dictionary_id |
Необязательный параметр. id словаря с кастомными правилами проверки. Создание и редактирование словарей. |
|
ai | true , false , 1 , 0 . Использовать TextGears AI для улучшения качества анализа текста.Важно! Работает не для всех языков. Запросы AI считаются отдельно, обратите внимание на их количество для каждого тарифа. |
|
key | Ваш API-ключ. Нет ключа? Получить в один клик!. |
Пример запроса
https://api.textgears.com/spelling?key=DEMO_KEY&text=I+is+an+engeneer!&language=en-GB
Отправить запрос
Результат будет показан ниже
Ответ сервера
{
status : true, // false in case of checking error
response : {
errors : [ // array of errors info
0 : {
id : "e627659964", // unique error id
offset : 8, // error text offset
length : 8, // error text length
bad : "engeneer", // error text
description: "Error description",
better : [ // array of suggestions
0 : "engineer",
1 : "engender"
],
type : "spelling"
}
]
}
}
Автокоррекция текста
https://api.textgears.com/correct
Есть два метода для автоматического исправления текста.
Метод correct заметно точнее, но относится к AI-запросам.
Важно!
В данный момент метод работает только для английского языка
Параметры запроса
https://api.textgears.com/suggest
Система проверки автоматически исправляет ошибки в тексте и предлогает продолжение последнего предложения.
Важно!
При обнаружении опечатки производится замена слова
на наиболее близкое. Если есть несколько слов, одинаково
похожих на ошибочное, то выбирается наиболее распространенный
в современной речи вариант.
TextGears еще далек от телепатии, поэтому большом количестве опечаток
смысл итогового текста может меняться.
Параметры запроса
Параметр | Пример | Описание |
---|---|---|
text | Текст в кодировке UTF-8. Лучше отправлять голый текст без HTML-тегов с некорректных UTF-8 символов. Мавсимальная длина ограничена параметрами вашего тарифного плана. | |
language |
Код языка. Необязательный параметр, значение по-умолчанию en-US . Список поддерживаемых кодов
|
|
key | Ваш API-ключ. Нет ключа? Получить в один клик!. |
Пример запроса
https://api.textgears.com/suggest?key=DEMO_KEY&text=I+is+an+engeneer!+My+na
Отправить запрос
Результат будет показан ниже
Ответ сервера
{
status : true, // false in case of checking error
response : {
corrected : "My name is Seth. My family", // corrected text
suggestions : [ // array of suggested text endings
0 : {
text : "My name is Seth. My family wishes",
next_word : "wishes"
},
1 : {
text : "My name is Seth. My family traditions",
next_word : "traditions"
},
2 : {
text : "My name is Seth. My family together",
next_word : "together"
},
3 : {
text : "My name is Seth. My family support",
next_word : "support"
},
4 : {
text : "My name is Seth. My family respectfully",
next_word : "respectfully"
}
]
}
}
Читабельность текста
https://api.textgears.com/readability
Расчет читабельности (readability) текста по наиболее распространенным алгоритмам и их адаптациям
для большинства языков. Более подробно о метриках читабельности можно
прочитать нашу отдельную статью.
Важно!
При определении метрик текста точность напрямую зависит от размера текста.
Определять читабельность или иные параметры текста лдя предложения из двух слов бессмысленно.
Рекомендуется проверять текст длиной хотя бы 30 слов. А лучше, еще больше.
Параметры запроса
Параметр | Описание |
---|---|
text | Текст в кодировке UTF-8. Лучше отправлять голый текст без HTML-тегов с некорректных UTF-8 символов. Мавсимальная длина ограничена параметрами вашего тарифного плана. |
language |
Код языка. Необязательный параметр, значение по-умолчанию en-US . Список поддерживаемых кодов
|
key | Ваш API-ключ. Нет ключа? Получить в один клик!. |
Пример запроса
https://api.textgears.com/readability?key=DEMO_KEY&text=...
Отправить запрос
Результат будет показан ниже
Ответ сервера
{
status : true, // false in case of checking error
response : {
stats : {
fleschKincaid : { // Flesch–Kincaid index (https://en.wikipedia.org/wiki/Flesch–Kincaid_readability_tests)
readingEase : 53.4, // Index value
grade : "10th to 12th grade", // Flesch–Kincaid grade
interpretation : "Fairly difficult to read" // index value interpretation
},
gunningFog : 12.2, // https://en.wikipedia.org/wiki/Gunning_fog_index
colemanLiau : 12, // https://en.wikipedia.org/wiki/Coleman–Liau_index
SMOG : 12, // https://en.wikipedia.org/wiki/SMOG
vocabularySize : {
active : null, // How many words author uses every day
passive : null // How many words author knows
},
emotion : { // text emotion classifier
positive : 0.79,
negative : 0.21
},
counters : {
length : 1128,
clearLength : 936,
words : 187,
sentences : 10
}
}
}
}
Анализ текста
https://api.textgears.com/analyze
Комплексный анализ текста. Находит все виды ошибок, рассчитывает метрики читабельности,
дает оценку правописанию на 100-бальной шкале,
а также дает оценку эмоциональному настроению текста
Важно!
При определении метрик текста точность напрямую зависит от размера текста.
Определять читабельность или иные параметры текста лдя предложения из двух слов бессмысленно.
Рекомендуется проверять текст длиной хотя бы 30 слов. А лучше, еще больше.
Параметры запроса
Параметр | Описание | |
---|---|---|
text | Текст в кодировке UTF-8. Лучше отправлять голый текст без HTML-тегов с некорректных UTF-8 символов. Мавсимальная длина ограничена параметрами вашего тарифного плана. | |
language |
Код языка. Необязательный параметр, значение по-умолчанию en-US . Список поддерживаемых кодов
|
|
whitelist |
Необязательный параметр. Массив слов, которые не нужно считать ошибками. |
|
dictionary_id |
Необязательный параметр. id словаря с кастомными правилами проверки. Создание и редактирование словарей. |
|
ai | true , false , 1 , 0 . Использовать TextGears AI для улучшения качества анализа текста.Важно! Работает не для всех языков. Запросы AI считаются отдельно, обратите внимание на их количество для каждого тарифа. |
|
key | Ваш API-ключ. Нет ключа? Получить в один клик!. |
Пример запроса
https://api.textgears.com/analyze?key=DEMO_KEY&text=...
Ответ сервера
{
status : true, // false in case of checking error
response : {
grammar: {
errors : [ // array of errors info
0 : {
id : "e492411846", // unique error id
offset : 2, // error text offset
length : 2, // error text length
description: "Error description",
bad : "is", // error text
better : [ // array of suggestions
0 : "am"
],
type : "grammar"
},
1 : {
id : "e627659964", // unique error id
offset : 8, // error text offset
length : 8, // error text length
bad : "engeneer", // error text
description: "Error description",
better : [ // array of suggestions
0 : "engineer",
1 : "engender"
],
type : "spelling"
}
],
},
stats: {
fleschKincaid : { // Flesch–Kincaid index (https://en.wikipedia.org/wiki/Flesch–Kincaid_readability_tests)
readingEase: 63.3, // Index value
grade : "8th or 9th grade", // Flesch–Kincaid grade
interpretation: "Plain English. Easily understood by 13- to 15-year-old students", // index value interpretation
}
gunningFog : 9.4, // https://en.wikipedia.org/wiki/Gunning_fog_index
colemanLiau : 12, // https://en.wikipedia.org/wiki/Coleman–Liau_index
SMOG : 6.5, // https://en.wikipedia.org/wiki/SMOG
vocabularySize : {
active: 5000, // How many words author uses every day
passinve: 60000, // How many words author knows
}
emotion: { // text emotion classifier
positive: 0.79, // probability
negative: 0.21,
}
}
}
}
Определение языка
https://api.textgears.com/detect
Определение языка текста и предположение о его диалекте.
Метод возвращает массив вероятностей для каждого языка.
Если не удается однозначно определить язык, в поле language
возвращается null
Параметры запроса
Параметр | Описание |
---|---|
text | Текст в кодировке UTF-8. Лучше отправлять голый текст без HTML-тегов с некорректных UTF-8 символов. Мавсимальная длина ограничена параметрами вашего тарифного плана. |
key | Ваш API-ключ. Нет ключа? Получить в один клик!. |
Пример запроса
https://api.textgears.com/detect?key=DEMO_KEY&text=...
Отправить запрос
Результат будет показан ниже
Ответ сервера
{
status : true, // false in case of checking error
response : {
language : "en", // null if language was not detected
dialect : "en-GB", // language dialect suggestion
probabilities : { // descending
"en" : 0.95,
"fr" : 0.61,
"ge" : 0.60,
"fi" : 0.51,
}
}
}
Суммаризация и извлечение ключевых слов
https://api.textgears.com/summarize
Параметры запроса
Параметр | Описание |
---|---|
text | Текст в кодировке UTF-8. Лучше отправлять голый текст без HTML-тегов с некорректных UTF-8 символов. Мавсимальная длина ограничена параметрами вашего тарифного плана. |
language |
Код языка. Необязательный параметр, значение по-умолчанию en-US . Список поддерживаемых кодов
|
max_sentences | Необязательный параметр. Максимальное количество предложений в результате |
key | Ваш API-ключ. Нет ключа? Получить в один клик!. |
Пример запроса
https://api.textgears.com/summarize?key=DEMO_KEY&language=en-GB&text=...
Отправить запрос
Результат будет показан ниже
Ответ сервера
{
status : true, // false in case of checking error
response : {
keywords : [
0 : "text",
1 : "readability",
2 : "english",
3 : "printing",
4 : "fewer",
5 : "words",
6 : "terms",
7 : "higher",
8 : "features",
9 : "indexes"
],
highlight : [ // Most important paragraph, starting with main sentence
0 : "The two main factors of readability are the printing and linguistic features of the text.",
1 : "In other words, pages containing simple and clear text get higher positions in the search results."
],
summary : [ // Text summary sentences
0 : "The two main factors of readability are the printing and linguistic features of the text.",
1 : "The Flesch Kinkaid Score is the most popular way to measure the readability of English text.",
2 : "It works on the principle of “the fewer words in the text, and the fewer syllables in them, the easier it is to perceive” and is most often used for checking essays in schools and universities."
]
}
}
Admin API
Данные тарифной квоты
https://api.textgears.com/account/resourcequota
Получение данных текущией тарифной квоты. Метод можно использовать чтобы следить за тем,
сколько запросов в рамках тарифа уже сделано, сколько запросов еще можно сделать
в рамках периода тарификации
Параметры запроса
Статистика использования
https://api.textgears.com/account/usage
Получение статистики использования API вашим аккаунтом с разбивкой по днях
Параметры запроса
Создание и редактирование словарей
https://api.textgears.com/custom/createdictionary
Если вам нужна гибкая настройка проверки текста на ошибки, воспользуйтесь настройкой кастомных исключений. Это будет особенно удобно компаниям, работающим с текстами, изобилующими специальной лексикой. Отмечайте слова или словосочетания как «правильные» чтобы система перестала считать их ошибочными или наоборот – чтобы система находила ошибку при появлении заданных вами слов.
Кастомные правила проверки можно объединять в словари. Чтобы, например, разные функции вашего продукта использовали разный набор правил. Или чтобы каждый пользователь вашего продукта мог иметь свой собственный набор исключений.
Параметры запроса
Параметр | Описание |
---|---|
id |
Id создаваемого словаря. Да, вы сами задаете удобный вам id. Строка до 64 символов. Это может быть числом, GUID или даже null. Словарь с id === null будет словарем по умолчанию. В него попадают исключения, созданные без указания dictionary_id.
|
title | Название словаря. Максимальная длина 500 символов. |
key | Ваш API-ключ. Нет ключа? Получить в один клик!. |
https://api.textgears.com/custom/updatedictionary
Параметр | Описание |
---|---|
id | Id словаря. Числом, GUID или даже null. |
title | Название словаря. Максимальная длина 500 символов. |
key | Ваш API-ключ. Нет ключа? Получить в один клик!. |
https://api.textgears.com/custom/listdictionaries
Параметр | Описание |
---|---|
limit | Максимальное количество записей в результате. Не больше 500. |
offset | Сколько записей пропускается при поиске. |
key | Ваш API-ключ. Нет ключа? Получить в один клик!. |
https://api.textgears.com/custom/deletedictionary
Параметр | Описание |
---|---|
id | Id словаря. Числом, GUID или даже null |
key | Ваш API-ключ. Нет ключа? Получить в один клик!. |
Добавить исключение
https://api.textgears.com/custom/addexception
Если вы проверяете тексты с очень специфической лексикой, которая
помечается нашей системой как ошибочная, вы можете добавить
слова или словосочетания в исключения. После этого они не будут считаться ошибочными.
Параметры запроса
Параметр | Описание |
---|---|
text | Слово или текст которые будут обрабатываться особым образом. Максимальная длина 500 симоволов. |
type | Тип исключения. Значения: 2 — считать text ошибкой, 1 — не считать text ошибкой. |
lang |
Код языка текста. Исключение будет применяться только для текстов на таком же языке. Если передать значение en , будет применяться для всех диалектов английского, de — немецкого, и.т.д.
|
description | Необязательный параметр. Текст описания исключения. |
dictionary_id |
Необязательный параметр. Идентификатор кастомного «словаря» — группы исключений. Строка не более 64 символов или NULL . При анализе текста можно передавать id словаря для включения исключений конкретной группы.
|
suggestions |
Необязательный параметр. Варианты исправления текста. Массив строк или строка, разделенная запятыми. Максимальное количество: 16. Параметр учитывается только для ошибок. |
key | Ваш API-ключ. Нет ключа? Получить в один клик!. |
Пример запроса
https://api.textgears.com/custom/addexception?text=foobaring&type=2&lang=en-US&key=DEMO_KEY
Ответ сервера
{
status : true,
response : {
id: 20, // New exception id
text: "foobaring",
type: 1,
lang: "en-US",
creation_time: "2023-06-08T19:20:10+0000",
suggestions: [],
update_time: null,
description: null,
},
}
Список исключений
https://api.textgears.com/custom/listexceptions
Вывод списка ранее добавленных слов-исключений
Параметры запроса
Параметр | Описание |
---|---|
limit | Максимальное количество записей в результате. Не больше 500. |
offset | Сколько записей, упорядоченных по тексту, пропускается при выводе. Используется для постраничного вывода. |
dictionary_id |
Необязательный параметр. id группы исключений (словаря). Для получения исключений из группы по умолчанию допустимо передавать null .
|
text |
Необязательный параметр. Фильтр по тексту исключения. |
type |
Необязательный параметр. Фильтр по типу исключения. |
lang |
Необязательный параметр. Фильтр по языку. |
key | Ваш API-ключ. Нет ключа? Получить в один клик!. |
Пример запроса
https://api.textgears.com/custom/addexception?text=foobaring&key=DEMO_KEY
Ответ сервера
{
status : true,
response : {
exceptions : [
{
id: 20,
text: "foobaring",
type: 1,
lang: "en-US",
creation_time: "2023-06-08T19:20:10+0000",
update_time: null,
description: null,
},
],
},
}
Удалить исключение
https://api.textgears.com/custom/deleteexception
Удалить слово-исключение для проверки. Если попытаться удалить ранее удаленное, то ошибки не возникает
Параметры запроса
Параметр | Описание |
---|---|
id | ID исключения для удаления.. |
dictionary_id |
Идентификатор словаря. Если не задан или передан null будет использован словарь по умолчанию.
|
key | Ваш API-ключ. Нет ключа? Получить в один клик!. |
Пример запроса
https://api.textgears.com/custom/deleteexception?id=20&key=DEMO_KEY
Ответ сервера
{
status : true,
response : {}
}
API проверкиРуководство по использованию
Взаимодействие через POST-запросы
Адрес для запросов:
Добавление текста на проверку уникальности и получение уникального идентификатора текста (uid)
Входные параметры:
- text — проверяемый текст на уникальность от 100 до 150000 символов (обязательный);
- userkey — ваш персональный секретный ключ (обязательный);
- exceptdomain — домены, которые вы хотите исключить из проверки. Домены разделяются пробелами или запятыми (необязательный);
- excepturl — ссылки, которые вы хотите исключить из проверки. Ссылки разделяются пробелами или запятыми (необязательный);
- visible — доступность результатов проверки другим пользователям. По-умолчанию — результаты проверки (https://text.ru/antiplagiat/{your_text_uid}) доступны только вашему аккаунту. Если вы хотите, чтобы результаты проверок были открыты, необходимо передать значение vis_on (необязательный);
- copying — если вы не хотите, чтобы формировалась ссылка с визуальным оформлением результатов проверки https://text.ru/antiplagiat/{your_text_uid}, то необходимо передать значение noadd (необязательный);
- callback — ваш URL (ссылка), на которую мы отправим POST-запрос с результатами проверки сразу же после её окончания. Подробности указаны ниже (необязательный).
Выходные параметры:
Если текст успешно добавился, возвращается один параметр:
- text_uid — уникальный идентификатор текста. Используется при последующем получении результатов проверки.
В случае возникновения ошибки возвращаются следующие параметры:
- error_code — код ошибки;
- error_desc — описание ошибки.
$body = [
'userkey' => '<USERKEY>',
// Проверяемый текст
'text' => '<TEXT>',
// Ссылка, на которую нужно отправить результат проверки
'callback' => 'https://your-site.com/callback',
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.text.ru/post');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body));
$rawResponse = curl_exec($ch);
if (curl_errno($ch)) {
throw new Exception('Ошибка curl: ' . curl_error($ch));
}
curl_close($ch);
$response = json_decode($rawResponse, true);
print_r($response); // ['text_uid' => '63c129651c171']
const axios = require('axios');
const client = axios.create({
baseURL: 'https://api.text.ru'
});
const body = {
userkey: '<USERKEY>',
// Проверяемый текст
text: '<TEXT>',
// Ссылка, на которую нужно отправить результат проверки
callback: 'https://your-site.com/callback'
};
client
.post('/post', body)
.then((response) => {
console.log(response.data);
})
.catch((err) => {
console.error(err);
})
;
Получение результатов проверки текста
Входные параметры:
- uid — уникальный идентификатор текста. Берется из метода addText (обязательный);
- userkey — ваш персональный секретный ключ (обязательный);
- jsonvisible — если вы хотите получить более детальную информацию о результатах проверки (дополнительные параметры смотрите ниже), то необходимо передать значение detail (необязательный).
Выходные параметры:
Если текст успешно проверен, возвращаются два параметра:
- text_unique — уникальность текста в процентах с точностью до 2 знаков после запятой;
- result_json — дополнительная информация о результатах проверки на уникальность в формате json. Структура json-ответа расшифрована ниже;
- spell_check — (доступен с опцией jsonvisible) дополнительная информация о результатах проверки на правописание в формате json.
Структура json-ответа расшифрована ниже; - seo_check — (доступен с опцией jsonvisible) дополнительная информация о результатах проверки на SEO-анализ в формате json.
Структура json-ответа расшифрована ниже.
Если текст ещё не проверился или произошла ошибка при проверке, возвращаются следующие параметры:
- error_code — код ошибки;
- error_desc — описание ошибки.
$body = [
'userkey' => '<USERKEY>',
'uid' => '<UID>',
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.text.ru/post');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body));
$rawResponse = curl_exec($ch);
if (curl_errno($ch)) {
throw new Exception('Ошибка curl: ' . curl_error($ch));
}
curl_close($ch);
$response = json_decode($rawResponse, true);
print_r($response);
const axios = require('axios');
const client = axios.create({
baseURL: 'https://api.text.ru'
});
const body = {
userkey: '<USERKEY>',
uid: '<UID>'
};
client
.post('/post', body)
.then((response) => {
console.log(response.data);
})
.catch((err) => {
console.error(err);
})
;
Структура JSON-ответа параметра result_json
- date_check — дата окончания проверки текста на сервере;
- unique — уникальность текста в процентах, с точностью до 2 знаков после запятой;
-
urls — массив ссылок, для которых известно:
- url — текст ссылки;
- plagiat — процент совпадения текста по ссылке;
- words — (доступен с опцией jsonvisible) номера позиций «совпадающих» слов в тексте (clear_text — см. ниже). Нумерация начинается с 0.
- clear_text — (доступен с опцией jsonvisible) очищенный от служебных символов и знаков препинания ваш текст, состоящий из слов, разделенных через пробел.
Посмотреть пример JSON-ответа
{
«date_check»:»29.03.2017 14:46:49″,
«unique»:0,
«clear_text»:»Wikipedia was launched оn January 15 2001 by Jimmy Wаles and Larry Sanger 11 Sanger coined its name 12 13 a portmanteau of wiki notes 4 and encyclopedia Therе was only the English language version initially but it quickly developed similar versions in other languages which differ in content and in editing practices With 5 466 824 articles notes 5 the English Wikipedia is the largest of the more than 290 Wikipedia encyclopedias Overall Wikipedia consists of more than 40 million articles in more than 250 different languages 15 and as of February 2014 it had 18 billion page views and nearly 500 million unique visitors each month»,
«mixed_words»:»4 10 29″,
«urls»:[
{
«url»:»https://en.wikipedia.org/wiki/Wikipedia»,
«plagiat»:100,
«words»:»0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107″
}
]
}
Структура JSON-ответа параметра spell_check
Проверка текста на правописание работает параллельно и независимо с проверкой на уникальность. К примеру, текст может провериться на правописание раньше, чем на уникальность. В этом случае результаты по правописанию уже будут доступны в ответе, в то время как для получения результатов проверки на уникальность понадобятся дополнительные запросы.
Проверка на правописание гарантированно не может найти все ошибки. Мы постоянно работаем над улучшением алгоритма. С примерами его работы вы можете ознакомиться в бесплатной версии через форму на сайте.
Если проверка на правописание ещё не завершена, то параметр spell_check будет равен пустой строке.
По завершению проверки параметр spell_check примет json-представление массива, элементы которого состоят из:
- error_type — тип ошибки (‘Орфография’, ‘Пунктуация’ и т.д.);
- reason — детальное описание ошибки;
- error_text — текст фрагмента, в котором обнаружилась ошибка;
- replacements — массив с предлагаемыми вариантами замены (может быть пустым);
- start — начальная позиция фрагмента, в котором найдена ошибка;
- end — конечная позиция фрагмента, в котором найдена ошибка.
Посмотреть пример JSON-ответа
[
{
«error_type»:»Spelling»,
«replacements»:[
«milk»,
«mild»,
],
«reason»:»Spelling error found»,
«error_text»:»mildd»,
«start»:255,
«end»:272
},
{
«error_type»:»Capital letters»,
«replacements»:[
«Hello»
],
«reason»:»This sentence doesn’t start with a capital letter»,
«error_text»:»hello»,
«start»:276,
«end»:287
}
]
Структура JSON-ответа параметра seo_check
Проверка текста на SEO-анализ работает параллельно, как и проверка текста на правописание. Текст на SEO-анализ может провериться раньше, чем на уникальность. В этом случае для получения результатов проверки на уникальность понадобятся дополнительные запросы до готовности ответа от API.
Если проверка на SEO-анализ ещё не завершена, то параметр seo_check будет равен пустой строке.
По завершению проверки параметр seo_check примет следующее json-представление:
- count_chars_with_space — количество символов с пробелами;
- count_chars_without_space — количество символов без пробелов;
- count_words — количество слов в тексте;
- water_percent — процент воды;
- spam_percent — процент заспамленности;
- mixed_words — номера позиций слов в тексте, у которых присутствуют символы из разных алфавитов и имеющих схожее написание. Нумерация начинается с 0.
-
list_keys — список ключей в тексте, отсортированных по частоте встречаемости:
- key_title — текст ключа;
- count — количество вхождений ключа в текст во всех формах.
-
list_keys_group — список ключей в тексте, отсортированных по числу значимых слов и сгруппированных по составу слов:
- key_title — текст ключа;
- count — количество вхождений ключа в текст во всех формах.
- sub_keys — список подключей:
- key_title — текст подключа;
- count — количество вхождений подключа в текст во всех формах.
Посмотреть пример JSON-ответа
{
«count_chars_with_space»:620,
«count_chars_without_space»:545,
«count_words»:77,
«water_percent»:11,
«spam_percent»:38,
«mixed_words»:[8,11,47],
«list_keys»:[
{
«key_title»:»check»,
«count»:6
},
{
«key_title»:»text»,
«count»:5
},
{
«key_title»:»antiplagiat»,
«count»:3
},
{
«key_title»:»check text»,
«count»:3
}
],
«list_keys_group»:[
{
«key_title»:»check text»,
«count»:3,
«sub_keys»:[
{
«key_title»:»check»,
«count»:6
},
{
«key_title»:»text»,
«count»:5
}
]
},
{
«key_title»:»antiplagiat»,
«count»:3,
«sub_keys»:[]
},
{
«key_title»:»check»,
«count»:6,
«sub_keys»:[]
},
{
«key_title»:»text»,
«count»:5,
«sub_keys»:[]
},
]
}
Callback получение результатов проверки
Проверка текста на уникальность занимает определенное (заранее неизвестное) время. Если вы хотите получить уведомление о факте завершения (вместе с результатами) проверки вашего текста, то вы можете при добавлении текста на API в параметре callback указать адрес вашего скрипта, который обработает наш POST-запрос с результатами проверки текста.
- Чтобы убедиться, что вы успешно получили результат, на вашей странице должно отобразиться ok и ничего более (echo «ok»;).
- Максимальное число попыток отправки результатов проверки — 3.
- В callback POST-запросе отправляются 4 параметра: uid, text_unique, json_result, spell_check. Структура json-ответа такая же, что и при ручном запросе результата (без атрибутов clear_text и words).
- Если проверка на правописание закончится позже проверки на уникальность, то будет отправлено 2 callback-запроса по мере окончания проверок (во время первого запроса параметр spell_check будет равен пустой строке).
- Получить результаты проверки на уникальность также можно и вручную.
Перечень возможных ошибок при проверке на уникальность
Код ошибки | Описание ошибки | Код ошибки | Описание ошибки |
---|---|---|---|
110 | Отсутствует проверяемый текст | 146 | Доступ ограничен |
111 | Проверяемый текст пустой | 150 | Шинглов не найдено. Возможно текст слишком короткий |
112 | Проверяемый текст слишком короткий | 151 | Ошибка сервера. Попробуйте позднее |
113 | Проверяемый текст слишком большой. Разбейте текст на несколько частей | 160 | Отсутствует проверяемый uid текста |
120 | Отсутствует пользовательский ключ | 161 | Uid текста пустой |
121 | Пользовательский ключ пустой | 170 | Отсутствует пользовательский ключ |
140 | Ошибка доступа на сервере. Попробуйте позднее | 171 | Пользовательский ключ пустой |
141 | Несуществующий пользовательский ключ | 180 | Текущая пара ключ-uid отсутствует в базе |
142 | Нехватка символов на балансе | 181 | Текст ещё не проверен |
143 | Ошибка при передаче параметров на сервере. Попробуйте позднее | 182 | Текст проверен с ошибками. Деньги будут возвращены. |
144 | Ошибка сервера. Попробуйте позднее | 183 | Ошибка сервера. Попробуйте позднее |
145 | Ошибка сервера. Попробуйте позднее | 429 | Исчерпан текущий лимит запросов. Попробуйте позже. * |
* Разрешено добавлять не более 3 млн. символов в час на проверку. При превышении данного лимита будет возвращена ошибка с кодом 429. Лимит восстанавливается в начале каждого часа.
Получение остатка символов на балансе
Адрес для запроса: http://api.text.ru/account
POST-параметры запроса:
- method — ‘get_packages_info‘ (обязательный);
- userkey — ваш персональный секретный ключ (обязательный);
Результат запроса (в формате json):
- size — суммарный остаток символов по всем пакетам;
Внимание! В целях безопасности, чтобы ваш IP-адрес не заблокировался, не рекомендуется обращаться к данному методу чаще 2 раз в минуту.
$body = [
'userkey' => '<USERKEY>',
'method' => 'get_packages_info',
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.text.ru/account');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body));
$rawResponse = curl_exec($ch);
if (curl_errno($ch)) {
throw new Exception('Ошибка curl: ' . curl_error($ch));
}
curl_close($ch);
$response = json_decode($rawResponse, true);
print_r($response); // ['size' => 1000]
const axios = require('axios');
const client = axios.create({
baseURL: 'https://api.text.ru'
});
const body = {
userkey: '<USERKEY>',
method: 'get_packages_info'
};
client
.post('/account', body)
.then((response) => {
console.log(response.data);
})
.catch((err) => {
console.error(err);
})
;
Опубликовано:
19 сентября 2013 в 20:33
13
3
Довольно часто при наборе текста возникают опечатки, а так же бывает грамотность сотрудников оставляет желать лучшего, поэтому я решил показать сообществу как можно произвести проверку на элементарные ошибка в словах.
Решение не является уникальным, и идеальным, но свою работу делает.
Для работы необходим доступ в интернет.
if MessageBox(CONFIRMATION_CAPTION; "Проверить орфографию?"; 'Да|Нет'; 'Да'; 'Нет') == 'Нет'
Exit()
endif
// Коды ошибок
Коды = Массив("Слова нет в словаре.";
"Повтор слова.";
"Неверное употребление прописных и строчных букв.";
"Текст содержит слишком много ошибок. При этом приложение может отправить Яндекс.Спеллеру оставшийся непроверенным текст в следующем запросе.")
if not VarIsNull(Object.Текст)
Текст = "text=" & ЗамПодстр(trim(Object.Текст); ' '; '+')
// ссылка
URL = "http://speller.yandex.net/services/spellservice/checkTexts"
FreeException()
ExceptionsOff()
XMLHttp = CreateObject("Microsoft.XMLHTTP")
XMLHttp.Open("POST"; URL; FALSE)
xmlhttp.setRequestHeader("Content-Type"; "application/x-www-form-urlencoded")
XMLHttp.Send(Текст)
ResponseXML = XMLHttp.ResponseXML()
XMLDoc = CreateObject("MSXML.DOMDocument")
XMLDoc.LoadXML(ResponseXML.xml)
ValutesNode = XMLDoc.selectNodes("ArrayOfSpellResult/SpellResult/error")
i = 0
while i < ValutesNode.Length
word = ValutesNode.item(i).selectNodes("word")
s = ValutesNode.item(i).selectNodes("s")
code = ValutesNode.item(i).selectNodes("@code").Item(0).NodeValue
Сообщение = word.item(0).Text & CR & Коды[code - 1] & CR & "Выберите вариант для замены:"
Варианты = "Пропустить"
// Может быть несколько вариантов замены
q = 0
while q < s.Length
Варианты = s.item(q).Text & "|" & Варианты
q = q + 1
endwhile
Результат = MessageBox(ATTENTION_CAPTION; Сообщение; Варианты)
if (Результат <<>> 'НЕУДАЧА: ESC') AND (Результат <<>> 'Пропустить')
Object.Текст = ЗамПодстр(Object.Текст; word.item(0).Text; Результат)
endif
i = i+1
endwhile
ExceptionsOn()
ShowMessage("Проверка окончена")
endif
Для проверки я сделал кнопку по нажатию на которую проверяется объект Object.Текст, как использовать данное решение, решать вам.
Существуют другие решения для проверки правописания, но они платные, и требуют установки словаря на каждое рабочее место, примером такого решения является Microsoft Office.
2021-05-23 19:34:10
Для доступа к api необходимо войти в личный кабинет, пополнить баланс и записать свои user_id и api_key.
Стоимость равна стоимости PRO версии.
Ограничения — 60 запросов в минуту.
История проверок доступна в личном кабинете.
Результат проверки хранится 7 дней.
Расставить запятые и проверка пунктуации
Отправка
Отправить текст на проверку пунктуации — POST https://textovod.com/api/punctuation/user/add (запросы в кодировке UTF-8, json в теле)
{ «user_id»: свой id, «api_key»:»свой key», «text»: “ваш текст”, “lang”: “ru, en, fr, es, de, it, pt” }
Ответы
Если Добавлен новый текст: {«status»: от 0 до 3, «text_id»:»id текста для получения статуса»}.
Статусы: 0 — ошибка, 3 — в очереди, 1 — обработка, 2 — готово.
Если текст уже проверяли: результат проверки (см. ниже)
Результат
Получить результат — POST https://textovod.com/api/punctuation/user/status
{ «user_id»: свой id, «api_key»:»свой key», «text_id»: «id текста» }
Ответы
Если статус проверки равен 2, то возвращается результат:
{«status»:2, «punctuation»:»результат проверки», «text_id»:»id текста»,
«result»: {
«punctuation»: [
{
«paragraph»: [
{
«offset»: номер позиции
«length»: длина,
«mes»: «вид сообщения»
},
…
]
},
….
],
«statistics»: {
«add»: количество добавлений,
«delete»: количество удаленных,
«register»: количество изменений регистра,
«ok»: количество правильных знаков
}
},
«text»: «Исходный текст»,
«resultText»: [
«Используемый исходный текст с разбивкой на абзацы, относительно которого задаются положения знаков»
]
}
Знаки, которые расставила система находятся в теге <mark>.
Если текст превышает 100 тыс. символов, он будет обрезан до 100 тыс. символов.
Результат делится на абзацы. Для максимального совпадения разметки с api проверки орфографии необходимо оставлять в тексте только буквы, пробелы, переносы строк и знаки . , ? ! : ; —
Проверка орфографии
Отправить текст на проверку орфографии — POST https://textovod.com/api/spelling/user/add (запросы в кодировке UTF-8, json в теле)
{ «user_id»: свой id, «api_key»:»свой key», «text»: «ваш текст» }
Ответ
{
«status»: 1, (0 — ошибка, 1 — готово)
«result»: «[{«offset»:Позиция, «length»:Длина,»mes»:»Описание»,»rep»:[варианты]},{«offset»:0, «length»:11, «mes»:»Описание»,»rep»:[]}]»,
«count»: Количество возможных ошибок,
«text»: «Ваш текст с обработкой на сервере»,
«text_id»: «id текста»
}
Получить готовый результат
Получить результат — POST https://textovod.com/api/spelling/user/status
{ «user_id»: свой id, «api_key»:»свой key», «text_id»: «id текста» }
Ответ подобен ответу из add
Проверка уникальности текста
Отправка
Отправить текст на проверку пунктуации — POST https://textovod.com/api/unique/user/add (запросы в кодировке UTF-8, json в теле)
{ «user_id»: свой id, «api_key»:»свой key», «text»: «ваш текст» }
Ответы
Если Добавлен новый текст: {«status»: от 0 до 3, «text_id»:»id текста для получения статуса»}.
Статусы: 0 — ошибка, 3 — в очереди, 1 — обработка, 2 — готово.
Если текст уже проверяли: результат проверки (см. ниже)
Результат
Получить результат — POST https://textovod.com/api/unique/user/status
{ «user_id»: свой id, «api_key»:»свой key», «text_id»: «id текста» }
Ответы
Если статус проверки равен 2, то возвращается результат:
{
«status»: 2,
«text_id»: «id проверки»,
«originality»: уникальность,
«position»: «позиции слов»,
«text»: «ваш текст «,
«urls»: «[{«url»:»адрес источника», «domain»: «домен источника», «position»: «позиции слов», «similarity»: % совпадений}, …]» — источники
}
Минимальный объем текста — 100 символов.
Если текст превышает 200 тыс. символов, он будет обрезан до 200 тыс. символов.
Spell-checker.js
Простой гибкий иструмент для проверки орфографии.
Readme: English
Русский
Поддержка языков
- Русский
- Английский
Быстрый старт
Установка:
npm i spell-checker-js
Использование:
const spell = require('spell-checker-js') // Подгрузка словаря spell.load('en') // Проверка орфографии const check = spell.check('Some text to check, blahblahblah, olololo') console.log(check) // -> ['blahblahblah', 'olololo']
Методы и свойства
spell.load(dictionary)
или spell.load(options)
— загрузка файла со словарём
Примеры:
// Способы подгрузки стандартного словря: spell.load('ru') spell.load({ input: 'ru' }) // Подгрузка пользовательского словаря: spell.load('./my_custom_dictionary.txt') // Подгрузка пользовательского словаря с кодировкой: spell.load({ input: './my_custom_dictionary.txt', charset: 'windows-1251' }) // Асинхронная подгрузка стандартного словаря spell.load({ input: 'en', async: true }).then(len => { console.log(len); // len — количество подгруженных слов spell.check('something') })
Список стандартных словарей:
en
— словарь с английскими словамиru
— словарь с русскими словамиru_surnames
— словрь с русскими
Вы можете помочь проекту, добавив словари с другими языками.
spell.check(string)
— проверка орфографии текста
Возвращает: массив с неправильными словами
Пример:
spell.load('en') const check = spell.check('Some text to check, blahblahblah, olololo') console.log(check) // -> ['blahblahblah', 'olololo']
spell.clear()
— очистка подгруженных словрей
Пример:
spell.load('en') spell.clear() spell.check('something') // -> ERROR! Dictionaries are not loaded
spell.size
— количество подгруженных слов
Пример
spell.load('en') spell.load('ru') console.log(spell.size) // -> 1956898