J'ai un projet C ++ dans Visual Studio 2010 et souhaite utiliser OCR. Je suis tombé sur de nombreux "tutoriels" pour Tesseract mais malheureusement, tout ce que j'ai eu était un mal de tête et un temps perdu.
Dans mon projet, j'ai une image stockée comme un tapis qui me fait une sortie < em> out.txt em> puis j'appelle p> pour lire la sortie de Tesseract. P> C'est tout bien et fonctionne comme une chaise, mais ce n'est pas une solution optimale. Dans mon projet, je traite une vidéo donc sauvegarde / appel .exe / écriture / lecture em> à 10+ fps n'est pas ce que je cherche vraiment. Je souhaite mettre en œuvre Tesseract sur le code existant afin de pouvoir passer un tapis comme un argument et obtenez immédiatement un résultat en tant que chaîne. P> Connaissez-vous un bon tutoriel (PREF. Étape étape par étape) Pour mettre en œuvre Tesseract OCR avec Visual Studio 2010? Ou votre propre solution? P> p>
3 Réponses :
Vous devez utiliser la bibliothèque via l'API. P>
Très probablement: p>
Commencez par Downlaoding the Libs ( https://code.google.com/p/Tesseract-ocr/downloads/detail?Name=Tesseract-3.02.02-win32-lib-include-Dirs .zip & can = 2 & q = ). Ils sont compilés avec Visual 2008 mais il devrait suffire p> li>
Utilisez directement l'API directement (Exemple, consultez un projet open source à l'aide de: https://code.google.com/p/qtesseract/source/browse/#svn%2ftrunk%2ftessData ) et lisez les liens de cette réponse:
Téléchargé les libs. Dans C / C ++> Général> Inclure les annuaires: i> Ajouté \ \ Inclure le dossier i>. Dans Linker> Général> Répertoires supplémentaires de la bibliothèque: i> a ajouté \ lib i> dossier. Dans Jadeur> Entrée> Dépendances supplémentaires: I> Ajout libtesseract302.lib i> et libtesseract302d.lib i>. A écrit un programme simple et ne peut pas construire à cause de la liaison des erreurs pour chaque méthode appelée objet. Par exemple: Erreur 9 Erreur 9 Erreur LNK2019: Symbole externe non résolu "Public: Char * __cdecl Tesséract :: Tessbaseapi :: getTf8Text (vide)" (? Getutf8text @ tessbaseapi @ tesseract @@ qeapeadxz) référencé dans la fonction principale code> . Qu'est-ce que je rate?
Bonne nouvelle: l'étape de compilation fonctionne. Bad News, l'étape de liaison échoue. On dirait que cela ne trouve pas la bonne bibliothèque pour la liaison. Je conseillerais d'utiliser libtesseract302.lib en libération et libtesseract302d.lib en débogage. Vous pouvez accéder à ConfigurationProperttis / Linked / Command Line dans votre projet Visual pour vous assurer que la ligne de commande pointe vers la position correcte.
Utilisez la configuration x64 à cause de OpenCV ... donc je suis passé à X86. Pas plus d'erreurs de liaison Tesseract. Maintenant, j'ai des erreurs de liaison similaires mais avec des fonctions OPENCV. J'ai donc jeté l'Opencv et j'ai essayé de construire Tesseract uniquement pour voir si cela fonctionne. Switked IMREAD (OPENCV) pour PixRead (Leptonica?). Apparemment, il ne reconnaît pas cette fonction pixread. Je pense avoir besoin de beaders de Lapptonica? Allheaders.h ou quoi? Je renonce lentement sur tout: /
Cela a été beaucoup depuis la dernière réponse, mais cela peut être de l'aide pour les autres; p>
(Cette réponse doit être un commentaire à la réponse de Bruce. Désolé pour la confusion.) P>
Lorsque vous dites "Ajouter #include à votre code", qu'est-ce qui doit être inclus?
Vous devriez ajouter: #include
OK, je l'ai compris, mais cela fonctionne pour version forte> et SO, P> Strong> dans Visual Studio, allez sous INSERT 4. strong> sous INSERT 5. strong> sous Ajouter: p>
tesseract.zip code> à
c: \ code> p>
C / C ++> Général> Inclure les annuaires CODE> P>
C: \ TESSERACT \ Inclure P> P> P> P> P> P> P> P> P> P> P>
linker> Général> Répertoires de bibliothèque supplémentaires CODE> P>
C: \ TESSERACT \ LIB code> P>
linker> entrée> dépendances supplémentaires code> p>
#include <tesseract\baseapi.h>
#include <leptonica\allheaders.h>
#include <iostream>
using namespace std;
int main(void){
tesseract::TessBaseAPI api;
api.Init("", "eng", tesseract::OEM_DEFAULT);
api.SetPageSegMode(static_cast<tesseract::PageSegMode>(7));
api.SetOutputName("out");
cout<<"File name:";
char image[256];
cin>>image;
PIX *pixs = pixRead(image);
STRING text_out;
api.ProcessPages(image, NULL, 0, &text_out);
cout<<text_out.string();
system("pause");
}
J'ai dit un chemin de données linguistique comme celui-ci fonctionnant. Api.init ("C: \\ Tessdata", "fra", Tesseract :: OEM_DEFAULT);
Je ne trouve pas de dossier que "Tessdata" ?? Devrais-je le créer orit doit être dans le dossier @ İsmailkocacan
Je télécharge le dossier votre lien mais ce n'est pas Tessdata ?? @Ouvert d'esprit
Le dossier de langue «Tessdata» personnalisé a été utilisé par l'utilisateur @ İsmailkocacan, alors demandez-lui.