The Text Moderation API for Images is useful to determine if an image contains unwanted text such as profanity or personally identifiable information.
The API gives you a fine-grained control over the moderation decision. The API will tell you what type of content has been found (phone number, email address, discriminatory content, sexual content...) along with a text extract of the content. You can then use this response to reject, flag or review the image on your end.
Just like our other Image Moderation APIs, this API uses advanced AI to perform the analysis entirely automatically. There are no humans reviewing your image. This helps us achieve very fast turnaround times — typically a couple of seconds — and very high scalablity.
The Text Moderation API for Images works in several steps:
Profanity Detection will enable you to detect insults, discriminatory content, sexual content or other inappropriate words and phrases in your images.
lot stronger than word-based filters. It uses advanced language analysis to detect objectionable content, even when users specifically attempt to circumvent your filters. It covers obfuscation techniques such as repetitions, insertions, spelling mistakes, leet speak and more. Learn more on our Text Moderation Engine.
Email addresses will be detected and flagged as such in the image.
Phone numbers from will be detected and flagged as such in the image. We currently support phone numbers from the following countries: United States, Canada, United Kingdom, France, India. Please reach out if you need support for other countries.
Links and URLs will be detected and flagged as such in the image.
English is the default language used for the text recognition and profanity filtering.
Other languages are available upon request (Spanish, French, German...) as well as non-latin alphabets. If you need another language, please get in touch.
If you haven't already, create an account to get your own API keys. You should then install the SDK that corresponds to your programming language. You can also implement your own logic to interact with our API if you prefer. Have a look at our API reference for more details.
# install cURL: https://curl.haxx.se/download.html
pip install sightengine
composer require sightengine/client-php
npm install sightengine --save
Let's say you want to moderate the following image:
You can either upload a public URL to the image, or upload the raw binary image. Here's how to proceed if you choose to share the image's public URL:
curl -X GET -G 'https://api.sightengine.com/1.0/check.json' \
-d 'models=text-content' \
-d 'api_user={api_user}&api_secret={api_secret}' \
--data-urlencode 'url=https://sightengine.com/assets/img/examples/example-text-ocr-3.jpg'
# if you haven't already, install the SDK with 'pip install sightengine'
from sightengine.client import SightengineClient
client = SightengineClient('{api_user}','{api_secret}')
output = client.check('text-content').set_url('https://sightengine.com/assets/img/examples/example-text-ocr-3.jpg')
// if you haven't already, install the SDK with 'composer require sightengine/client-php'
use \Sightengine\SightengineClient;
$client = new SightengineClient('{api_user}','{api_secret}');
$output = $client->check(['text-content'])->set_url('https://sightengine.com/assets/img/examples/example-text-ocr-3.jpg');
// if you haven't already, install the SDK with 'npm install sightengine --save'
var sightengine = require('sightengine')('{api_user}','{api_secret}');
sightengine.check(['text-content']).set_url('https://sightengine.com/assets/img/examples/example-text-ocr-3.jpg').then(function(result) {
// The API response (result)
}).catch(function(err) {
// Handle error
});
The API will then return a JSON response:
{
"status": "success",
"request": {
"id": "req_22Qd0gUNmRH4GCYLvYtN6",
"timestamp": 1512483673.1405,
"operations": 1
},
"text": {
"personal": [
{
"type": "phone_number_us",
"match": "+1 800 222 2408"
}
],
"link": [],
"profanity": [],
"ignore_text": false
},
"media": {
"id": "med_22Qdfb5s97w8EDuY7Yfjp",
"uri": "https://sightengine.com/assets/img/examples/example-text-ocr-3.jpg"
}
}
We're always looking for advice to help improve our documentation!