9
votes

Comment mettre en œuvre Tesseract pour exécuter avec le projet dans Visual Studio 2010

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 . Une solution à mon problème est de sauvegarder ce tapis comme une image (image.jpg par exemple), puis appelez le fichier exécutable Tesseract comme celui-ci: xxx

qui me fait une sortie < em> out.txt puis j'appelle xxx

pour lire la sortie de Tesseract.

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 à 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.

Connaissez-vous un bon tutoriel (PREF. Étape étape par étape) Pour mettre en œuvre Tesseract OCR avec Visual Studio 2010? Ou votre propre solution?


0 commentaires

3 Réponses :


0
votes

Vous devez utiliser la bibliothèque via l'API.

Très probablement:


3 commentaires

Téléchargé les libs. Dans C / C ++> Général> Inclure les annuaires: Ajouté \ \ Inclure le dossier . Dans Linker> Général> Répertoires supplémentaires de la bibliothèque: a ajouté \ lib dossier. Dans Jadeur> Entrée> Dépendances supplémentaires: Ajout libtesseract302.lib et libtesseract302d.lib . 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 . 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: /



2
votes

Cela a été beaucoup depuis la dernière réponse, mais cela peut être de l'aide pour les autres;

  1. Je pense que vous devez également ajouter "Liblept168.lib" et "Liblept168d.lib" à des dépendances supplémentaires
  2. Ajouter "Liblept168.dll" et "Liblept168d.dll" à la destination de votre EXE.
  3. Ajouter #include à votre code.

    (Cette réponse doit être un commentaire à la réponse de Bruce. Désolé pour la confusion.)


2 commentaires

Lorsque vous dites "Ajouter #include à votre code", qu'est-ce qui doit être inclus?


Vous devriez ajouter: #include #include



19
votes

OK, je l'ai compris, mais cela fonctionne pour version forte> et Win32 forte> configuration uniquement (pas de débogage ou x64). Il existe de nombreuses erreurs de liaison sous la configuration de débogage.

SO, P>

1. FORT> Tout d'abord, téléchargez dossier de bibliothèque préparé (Tesseract + Laptonica) ici: P> Mirror 1 (Google Drive) P>

Miroir 2 (MediaFire) P>


2. strong> extrait tesseract.zip code> à c: \ code> p>

Strong> dans Visual Studio, allez sous C / C ++> Général> Inclure les annuaires CODE> P>

INSERT C: \ TESSERACT \ Inclure P> P> P> P> P> P> P> P> P> P> P>

4. strong> sous linker> Général> Répertoires de bibliothèque supplémentaires CODE> P>

INSERT C: \ TESSERACT \ LIB code> P>


5. strong> sous linker> entrée> dépendances supplémentaires code> p>

Ajouter: 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");
}


4 commentaires

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.