Analysez le texte
scantext
POST https://tesseractor.com/api/v1/scantext?login=&password=
login | Votre code d'identification. |
---|---|
password | Votre mot de passe. |
multipart/form-data | |
file | Contenu du PDF ou de l'image JPG, PNG ou GIF en binaire. |
lang | Langue du texte. |
psm | Mode d'analyse du texte. |
out | Type de sortie. |
firstpage | Première page à traiter dans un PDF. |
lastpage | Dernière page à traiter dans un PDF. |
resolution | Résolution en dpi de l'image générée pour chaque page d'un PDF. |
text | Extraction directe du seul texte en clair d'un PDF. |
images | Extraction directe des seules images d'un PDF. |
rotate | Rotation des images. |
crop | Découper les images. Découper le texte. |
reframe | Recadrer les images sur un fond. |
unborder | Supprimer les lignes de bordure. |
resize | Redimensionner les images. |
negate | Inverser les couleurs. |
normalize | Ajouter du contraste aux couleurs. |
colorspace | Convertir en niveaux de gris. |
unsharp | Accentuer les contours. |
dots | Supprimer les points blancs. |
lang
- langue du texte : eng
, fra
, deu
, spa
, ita
ou rus
.
Spécifiez plusieurs langues en les séparant par un +
, e.g. fra+eng
.
NOTE : L'ordre est important.
psm
- Page Segmentation Mode :
1
- Automatic page segmentation with OSD (Orientation and Script Detection),
3
- Fully automatic page segmentation, but no OSD,
4
- Assume a single column of text of variable sizes,
6
- Assume a single uniform block of text).
out
- sélection du type de sortie :
txt
hocr
box
.
Indiquez le mode d'extraction de chaque page d'un PDF :
firstpage
: Numéro de la première page à traiter,
lastpage
: Numéro de la dernière page à traiter,
resolution
: résolution de l'image générée en dpi - 50
, 75
, 100
, 125
, 150
ou 200
.
IMPORTANT : Si une page ne contient qu'une image et aucun texte, l'image est systématiquement directement extraite du document,
images
: 1
- extraire uniquement directement toutes les images.
Activez les options de traitement de chaque image avant analyse :
rotate
: 180
pour retourner l'image, -90
ou 90
pour la tourner vers la gauche ou vers la droite,
crop
- : découper l'image à la taille spécifiée par une largeur et une hauteur séparées par un x
à partir d'une position spécifiée par des coordonnées x et y précédées par un +
en pixels pour la résolution donnée, e.g. 640x200+50+80
,
reframe
- : recadrer l'image sur un fond avec un niveau de flou entre 1
et 20
, e.g. 5
,
unborder
- : retirer les bordures avec, séparées par un x
, la largeur et la hauteur maximum d'un texte entre 10
et 1000
pixels, e.g. 30x30
,
resize
- : redimensionner l'image de 50
, 75
, 125
, 150
ou 200
%,
negate
- : 1
- inverser les couleurs,
normalize
- : 1
- ajouter du contraste aux couleurs,
colorspace
- : 1
- convertir les couleurs en niveaux de gris,
unsharp
- : 1
- accentuer les contours,
dots
- : 1
- supprimer les points blancs.
IMPORTANT : Les options de traitement d'une image sont effectués dans l'ordre ci-dessus.
Pour extraire le texte en clair d'un PDF, utilisez les options suivantes :
text
: 1
- extraire uniquement directement le texte en clair d'un PDF,
firstpage
: Numéro de la première page à traiter,
lastpage
: Numéro de la dernière page à traiter,
resolution
: résolution de l'image d'une page d'un PDF en dpi - 50
, 75
, 100
, 125
, 150
ou 200
,
crop
- : extraction du texte dans la zone définie par une largeur et une hauteur séparées par un x
à partir d'une position spécifiée par des coordonnées x et y précédées par un +
en pixels pour la résolution donnée, e.g. 640x200+50+80
.
Pour avoir une bonne compréhension des effets de ces paramètres, testez-les dans l'interface de votre espace personnel.
$ curl -s --fail --show-error -X POST "https://tesseractor.com/api/v1/scantext?login=abcdef&password=ABCDEF" -F "lang=eng" -F "psm=6" -F "file=@fox.jpg" -o -
The quick brown fox
jumps over
the lazy dog.
Le texte est lu avec Tesseract en mode 6 - Assume a single uniform block of text - avec les données entraînées pour la langue anglaise.
legal_fr.pdf • 381k
$ curl -s --fail --show-error -X POST "https://tesseractor.com/api/v1/scantext?login=abcdef&password=ABCDEF" -F "lang=fra" -F "psm=4" -F "out=hocr" -F "resize=125" -F "unsharp=1" -F "file=@legal_fr.pdf" -o ocr.html
Le PDF est une photocopie qui contient 1 image par page. Le texte est lu avec Tesseract en mode 4 - Assume a single column of text of variable sizes - après un redimensionnement des images à 125 % et une accentuation des contours. La sortie est formatée en HTML.
Affichez le HTML dans votre navigateur :
$ firefox ocr.html
Essayez en ajoutant -F "images=1"
à la ligne de commande.
Comme le PDF ne contient qu'une seule image par page, le processus est identique, à peine plus rapide.
$ curl -s --fail --show-error -X POST "https://tesseractor.com/api/v1/scantext?login=abcdef&password=ABCDEF" -F "lang=fra" -F "psm=4" -F "out=hocr" -F "resolution=150" -F "file=@legal_fr.pdf" -o ocr.html
Le texte est lu avec Tesseract en mode 4 - Assume a single column of text of variable sizes - après la génération d'une image par page avec une résolution de 150 dpi.
Ce PDF est le résultat de la fonction Imprimer dans un fichier du navigateur sur la page Mentions légales du site.
Si vous passez l'option images=1
, aucune n'image n'est trouvée, et le résultat est un fichier vide.
NOTE : Si vous téléchargez ce PDF dans l'interface de votre espace personnel, vous pouvez directement récupérer le texte en clair sans l'analyser.
Téléchargez le code des fonctions sendpost
et file_mime_type
de la librairie iZend.
Copiez les fichiers dans l'espace de votre application.
NOTE : Reportez-vous à la page Appelez l'API du service pour une description des fonctions sendpost
et file_mime_type
.
Ajoutez le fichier scantext.php avec le contenu suivant :
- require_once 'sendhttp.php';
- require_once 'filemimetype.php';
Charge le code des fonctions sendpost
et file_mime_type
.
- function scantext($login, $password, $file, $lang='eng', $psm='3', $out='txt', $output='ocr.txt', $params=false) {
Définit la fonction scantext
.
$login
est votre code d'identification. $password
est votre mot de passe.
$file
est le chemin d'accès du fichier PDF, JPEG, PNG ou GIF à analyser.
$lang
est la langue du texte, e.g. 'fra'
ou 'fra+eng'
.
$psm
spécifie le mode d'analyse du texte, i.e. 1
, 3
, 4
ou 6
.
$out
est le format de sortie, i.e. txt
, hocr
ou box
.
$output
donne le nom du fichier qui contiendra le texte ou le HTML retourné par l'analyse de $file
.
$params
est un tableau associatif contenant les noms et les valeurs des paramètres spécifiant le mode d'extraction de chaque page d'un PDF et les options de traitement de chaque image avant analyse, e.g. array('resolution' => 125, 'unsharp' => true))
.
- $curl = 'https://tesseractor.com/api/v1/scantext' . '?' . 'login=' . urlencode($login) . '&' . 'password=' . urlencode($password);
Met $curl
à l'URL de l'action scantext avec le code d'identification et le mot de passe du compte de l'utilisateur.
$login
et $password
doivent être échappés.
- $args = array(
- 'lang' => $lang,
- 'psm' => $psm,
- 'out' => $out,
- );
- $args = array_merge($args, $params);
Prépare la liste des arguments du POST.
- $files=array('file' => array('name' => basename($file), 'tmp_name' => $file, 'type' => file_mime_type($file)));
Prépare la liste des fichiers attachés au POST : file
- le fichier PDF, JPEG, PNG ou GIF à analyser avec le nom du fichier, le chemin d'accès au fichier et son type MIME.
- $response=sendpost($curl, $args, $files);
Envoie la requête HTTP avec sendpost
.
Les arguments login
et password
sont déjà dans $curl
.
- if (!$response or $response[0] != 200) {
- return false;
- }
Si $response
vaut false
, le serveur est inaccessible.
Si $response[0]
ne contient pas le code de retour HTTP 200 Ok, une erreur d'exécution s'est produite.
En cas d'erreur, scantext
retourne false.
- return @file_put_contents($output, $response[2]);
- }
Retourne true
si le texte ou le HTML retourné par la requête a bien été écrit dans le fichier de sortie, sinon false
.
EXEMPLE
En supposant que vous avez sauvé les fichiers sendhttp.php, filemimetype.php et scantext.php dans le répertoire courant, lancez PHP en mode interactif, chargez la fonction scantext
et appelez-la avec votre code d'identification et votre mot de passe, le chemin d'accès à un fichier PDF, JPEG, PNG ou GIF, un langage, un mode d'analyse, un type de sortie et le nom du fichier en sortie en argument :
$ php -a
php > require_once 'scantext.php';
php > scantext('abcdef', 'ABCDEF', 'file.pdf', 'fra', '4', 'hocr', 'ocr.html', array('resolution' => 125, 'unsharp' => true));
php > quit
Affichez le résultat en HTML dans votre navigateur :
$ firefox ocr.html
Ajoutez la balise suivante dans la section <head>
du fichier HTML en sortie pour afficher les mots lus en rouge en passant la souris sur le texte :
<style>
.ocrx_word:hover {color:#f30}
</style>
Commentaires
Pour ajouter un commentaire, cliquez ici.