Question

J'utilise un processeur Flexicapture pour reconnaître mon document. J'ai un cas où j'ai un document avec plusieurs pages, c'est-à-dire un document avec plusieurs images et chaque image est nécessaire de reconnaître.

Je suis en dessous de la procédure pour atteindre ma tâche générale, une image dans un document ou une image multiple dans un document;

  1. Créer un processeur
  2. Ajouter un fichier de définition de document ou un fichier AFL
  3. Run Reconnaissance en tant qu'oDocument Document= Processor.RecognizenextDocument (); Mais lorsqu'il renvoie un document, documenter, il n'a qu'une seule page, qui est la première page du document, pourquoi est-ce tellement?
  4. sur l'autre cas, si j'utilise le projet, le processeur, IPROJECT, avec la procédure en dessous de la procédure

    1. Créer un projet
    2. Obtenez des lots de Project Project.getbatches (),
    3. Ajouter un document (qui ont plusieurs pages) à lot
    4. les reconnaître THE TOUTES LES PAGES D'INFORMATION DU DOCUMENT, DES IDOCTIONS DOCUMENTS= BATCH.GETDOCUMENTS (),
    5. Comment puis-je obtenir la même tâche avec processeur d'esprit? Je souhaite que le processeur reconnaisse toutes les pages d'un document et renvoyer un document avec toutes les pages. ?

      Si quelque chose n'est pas clair, les pls demandent plus d'informations. S'il vous plait répondez au plus vite... Code: 1 Utilisation du processeur Flexicapture / ** * * /

      / ** * @Author Nitin * * /

      import java.sql.BatchUpdateException;
      
      import com.abbyy.FCEngine.*;
      
      public class FlexicaputreVerificationUsingProcessor {
      private static Object verificationWorkSet(Object object) {
          // TODO Auto-generated method stub
          return null;
      }
      private static void trace( String txt ) 
      {
          System.out.println( txt );
      }
      
      static private String samplesFolder;
      static private String projectFolder;
      static private String serialNumber;
      static private String dllPath;
      
      static {
      
          samplesFolder = "C:\\ProgramData\\ABBYY\\SDK\\10\\FlexiCapture Engine\\Samples\\";
          projectFolder = "C:\\Users\\Nitin\\FlexicaptureTest\\flexiverificationtest" ; 
      
          try {
      
              java.io.FileInputStream file = new java.io.FileInputStream( samplesFolder + "SampleConfig\\SamplesConfig.txt" );
      
              java.io.BufferedReader reader = new java.io.BufferedReader( new java.io.InputStreamReader( file ) );
      
              serialNumber = reader.readLine();
      
              dllPath = reader.readLine();
      
              file.close();
      
          } catch( java.io.IOException e ) {
               System.out.println( e.getMessage() );
               e.printStackTrace();
          }
      }
      
      
      /**
       * @param args
       */
      public static void main(String[] args) {
      
          // Load Engine 
          try {
                  trace("Loading engine");
                  IEngineLoader engineLoader= Engine.CreateEngineOutprocLoader();
                  IEngine engine = engineLoader.Load(serialNumber,dllPath);
      
                  try {
      
                      // Create and configure FlexiCaptureProcessor
                      trace("Creating and configureing FlexiCaptureProcessor");
                      IFlexiCaptureProcessor processor = engine.CreateFlexiCaptureProcessor();
                      processor.AddDocumentDefinitionFile( projectFolder + "\\Document_Definition_1.fcdot" );
      
                      trace("Adding images/pdf to processor");
                      final int fileCount = 1 ; 
      
                      processor.AddImageFile(projectFolder + "\\don't upload to big .pdf");
      
                      engine.EnableRecognitionVariants( true );
      
                      trace("Creating Document collection");
                      IDocumentsCollection documentsCollection = engine.CreateDocumentsCollection();
      
                      trace( "Reconizing Images/pdfs..." );
                      int totalErrors = 0 ; 
                      for ( int iterator = 0 ; iterator<fileCount; iterator++ ){
                          trace("Recongnizing image/pdf number: " +(iterator+1));
                          IDocument document = processor.RecognizeNextDocument(); 
      
                          trace("Getting last processing error for checksum");
                          IProcessingError lastProcessingError = processor.GetLastProcessingError() ;
      
                          if ( lastProcessingError !=null)
                          {
                              String errormsg = lastProcessingError.MessageText(); 
                              totalErrors++;
      
                              trace("Error occured while recognizeing document, Document number: "+(iterator+1)+ " with Error msg: "+errormsg);
                              //since we are not handling error (right now) so moving to next document for recognization  
                              processor.ResumeProcessing(false);
      
                          }else {
                              trace("No error occured while recognization of document number : "+(iterator+1));
                          }
                          trace("Adding documents in Documents collection");
                          documentsCollection.Add(document);
      
                      }
      
                      if ( totalErrors == fileCount){
                          trace("Facing Error for all document while recongnization");
                          return ; 
                      }
      
                      trace("Creaing Verification session");
      
                      try {
      
                          IVerificationSession verificationSession = engine.CreateVerificationSession(documentsCollection) ; 
      
                          try {
      
                              //enabling context verification
                              verificationSession.getOptions().setVerifyFields(true); 
      
                              //disabling group verification 
                              verificationSession.getOptions().setVerifyBaseSymbols(false);
                              verificationSession.getOptions().setVerifyExtraSymbols(false);
      
                              try {
                                  trace("Get NextWork Set");
                                  IVerificationWorkSet verificationWorkSet =  verificationSession.NextWorkSet();
      
                                  if ( verificationWorkSet == null){
                                      trace("first verificationWork set is null");
                                  }else {
      
                                      //process each work set in Verification session
                                      trace("Processing Work Set");
                                      while ( verificationWorkSet != null ){
      
                                          try{
                                              trace("Geting Verification group");
                                              //get next group for verification 
                                              IVerificationGroup verificationGroup = verificationWorkSet.NextGroup(); 
      
                                              if ( verificationGroup == null ){
                                                  trace("First verification group is null");
                                              }else {
                                                  trace("processing each group of a workset");
                                                  //processing each group of a work set
                                                  while ( verificationGroup!= null){
                                                      int verificationObjectInAGroupCount =  verificationGroup.getCount(); 
                                                      trace("Total number of verification object: " +verificationObjectInAGroupCount);
      
                                                      for ( int iterator = 0; iterator<verificationObjectInAGroupCount; iterator++){
                                                          trace ( "getting and Processing "+(iterator +1 ) + " verification object of A group");
      
                                                          //getting verification object 
                                                          IVerificationObject verificationObject = verificationGroup.getElement(iterator);
                                                          if ( verificationObject == null){
                                                              trace("verification object is null");
                                                          }else {
                                                              if ( verificationObject.getType() == VerificationObjectTypeEnum.VOT_Group ) {
                                                                  IGroupVerificationObject groupVerificationObject = verificationObject.AsGroupVerificationObject(); 
      
                                                                  if ( groupVerificationObject == null){
                                                                      System.out.println("group verification object is null ");
                                                                  }
      
      
                                                              }else if ( verificationObject.getType() == VerificationObjectTypeEnum.VOT_Context) {
                                                                  IContextVerificationObject  contextVerificationObject = verificationObject.AsContextVerificationObject(); 
      
      
      
      
                                                                  if ( contextVerificationObject == null){
                                                                      trace("ContextVerification object is null");
                                                                  }else {
                                                                      IField field = contextVerificationObject.getField(); 
                                                                      if ( field == null){
                                                                          trace("field getting null");
                                                                      }else {
                                                                          System.out.println(" field full name: " +field.getFullName() + "\n Name: " +field.getName());
      
                                                                          IFieldValue fieldValue = field.getValue();
                                                                          if ( fieldValue == null){
                                                                              trace("Field Value is Null");
                                                                              }else {
      
                                                                          trace ( "getting text from field value");
                                                                              IText text = fieldValue.getAsText() ; 
                                                                              if ( text == null){
                                                                                  trace("text getting null in field value");
                                                                              }else {
      
      
                                                                                  int wordCount = text.getRecognizedWordsCount() ; 
                                                                                  trace("recognized word count: "+wordCount);
      
                                                                                  //getting words from text 
                                                                                  for ( int wordIndex = 0 ; wordIndex<wordCount; wordIndex++ ){
                                                                                      trace ("processing word number :" +wordIndex);
      
                                                                                      IRecognizedWordInfo recognizedWordInfo = engine.CreateRecognizedWordInfo()  ; 
      
                                                                                      if ( recognizedWordInfo == null){
                                                                                          trace("Can't create recognizedWordInfo object using engine");
                                                                                      }else {
                                                                                          text.GetRecognizedWord(wordIndex, -1, recognizedWordInfo);
      
                                                                                          //getting characters from word
                                                                                          for (int characterIndex = 0 ; characterIndex<recognizedWordInfo.getText().length(); characterIndex++ ){
                                                                                              trace("processing character number : " +characterIndex);
      
                                                                                              IRecognizedCharacterInfo recognizedCharacterInfo = engine.CreateRecognizedCharacterInfo(); 
                                                                                              if ( recognizedCharacterInfo == null) {
                                                                                                  trace("can't create recognizedCharacterInfo object");
                                                                                              }else {
                                                                                                  recognizedWordInfo.GetRecognizedCharacter(characterIndex, -1, recognizedCharacterInfo);
      
                                                                                                  System.out.println(" Character: " + recognizedCharacterInfo.getCharacter());
                                                                                                  System.out.println(" Confidence level : " +recognizedCharacterInfo.getCharConfidence());
                                                                                              }
                                                                                          }
                                                                                      }
                                                                                  }
                                                                              }
                                                                              System.out.println(" Field Value : " +fieldValue.getAsString());
                                                                          }
                                                                      }
                                                                  }
                                                              }
                                                          }
                                                      }
      
                                                      trace("Geting next Verification group");
                                                      verificationGroup = verificationWorkSet.NextGroup();
                                                  }
      
                                              }
      
                                          }catch (Exception e){
                                              trace("Exception occured in getting next work group");
                                              e.printStackTrace();
                                          }
      
                                          trace("Get next worksets");
                                          //get next work set
                                          verificationWorkSet =  verificationSession.NextWorkSet();
      
                                      }
                                  }
      
                              }catch (Exception e){
      
                                  e.printStackTrace();
                              }
      
      
                          }finally {
                              trace("closing Verification object");
                              verificationSession.Close();
                          }
      
                      } catch (Exception e) {
                          trace("Exception occured in creating verification sessions");
                      }
      
      
      
                  }catch (Exception e){
                      trace ("Exception occured in");
                  }
      
          }catch (Exception e) {
                  // TODO: handle exception
      
                  e.printStackTrace();
          }
          finally {
                  trace("unloading Engine");
                  Engine.Unload();
              }
      
      
      
      }
      

      }

      Code: 2 Utilisation du projet

      import java.io.File;
      import java.io.IOException;
      import java.sql.BatchUpdateException;
      
      import com.abbyy.FCEngine.*;
      
      public class VerificationStep {
      //same as above
      
          public static void main( String[] args ) 
          {
              // Load Engine 
              try {
                      trace("Loading engine");
                      IEngineLoader engineLoader= Engine.CreateEngineOutprocLoader();
                      IEngine engine = engineLoader.Load(serialNumber,dllPath);
      
                      try{
                          IProject project = engine.OpenProject( projectFolder + "\\flexitest.fcproj" );
      
                          try {
                              IBatch batch = null ; 
                              trace( "Creating Batch..." );
                              IBatches batchs = project.getBatches(); 
                              if (batchs == null || batchs.getCount() == 0){
                                  batch = project.getBatches().AddNew("TestBatch");
                              }
                              batch = batchs.getElement(0);
                              assert(batch == null);
      
                              try{
                                  trace("opening batch");
                                  batch.Open();
      
                                  trace( "Adding pdfs..." );
                           batch.AddImage(projectFolder + "\\don't upload to big .pdf");
      
                                  trace( "Reconizing pdfs..." );
                                  batch.Recognize(null, RecognitionModeEnum.RM_ReRecognizeAll,null);
      
                                  trace("Creating Verification object");
                                  try {   
                                      IVerificationSession verificationSession = project.StartVerification(null); 
      
                                      try {
      
                                          //enabling context verification
                                          verificationSession.getOptions().setVerifyFields(true); 
      
                                          //disabling group verification 
                                          verificationSession.getOptions().setVerifyBaseSymbols(false);
                                          verificationSession.getOptions().setVerifyExtraSymbols(false);
      
                                          try {
                                              trace("Get NextWork Set");
                                              IVerificationWorkSet verificationWorkSet =  verificationSession.NextWorkSet();
      
                                              if ( verificationWorkSet == null){
                                                  trace("first verificationWork set is null");
                                              }else {
      
                                                  //process each work set in Verification session
                                                  trace("Processing Work Set");
                                                  while ( verificationWorkSet != null ){
      
                                                      try{
                                                          trace("Geting Verification group");
                                                          //get next group for verification 
                                                          IVerificationGroup verificationGroup = verificationWorkSet.NextGroup(); 
      
                                                          if ( verificationGroup == null ){
                                                              trace("First verification group is null");
                                                          }else {
                                                              trace("processing each group of a workset");
                                                              //processing each group of a work set
                                                              while ( verificationGroup!= null){
                                                                  int verificationObjectInAGroupCount =  verificationGroup.getCount(); 
                                                                  trace("Total number of verification object: " +verificationObjectInAGroupCount);
      
                                                                  for ( int iterator = 0; iterator<verificationObjectInAGroupCount; iterator++){
                                                                      trace ( "getting and Processing "+(iterator +1 ) + " verification object of A group");
      
                                                                      //getting verification object 
                                                                      IVerificationObject verificationObject = verificationGroup.getElement(iterator);
                                                                      if ( verificationObject == null){
                                                                          trace("verification object is null");
                                                                      }else {
                                                                          if ( verificationObject.getType() == VerificationObjectTypeEnum.VOT_Group ) {
                                                                              IGroupVerificationObject groupVerificationObject = verificationObject.AsGroupVerificationObject(); 
      
                                                                              if ( groupVerificationObject == null){
                                                                                  System.out.println("group verification object is null ");
                                                                              }
      
      
                                                                          }else if ( verificationObject.getType() == VerificationObjectTypeEnum.VOT_Context) {
                                                                              IContextVerificationObject  contextVerificationObject = verificationObject.AsContextVerificationObject(); 
      
      
      
                                                                              if ( contextVerificationObject == null){
                                                                                  trace("ContextVerification object is null");
                                                                              }else {
                                                                                  IField field = contextVerificationObject.getField(); 
                                                                                  if ( field == null){
                                                                                      trace("field getting null");
                                                                                  }else {
                                                                                      System.out.println(" field full name: " +field.getFullName() + "\n Name: " +field.getName());
      
                                                                                      IFieldValue fieldValue = field.getValue();
                                                                                      if ( fieldValue == null){
                                                                                          trace("Field Value is Null");
                                                                                          }else {
                                                                                              trace ( "getting text from field value");
                                                                                          IText text = fieldValue.getAsText() ; 
                                                                                          if ( text == null){
                                                                                              trace("text getting null in field value");
                                                                                          }else {
      
                                                                                              int wordCount = text.getRecognizedWordsCount() ; 
                                                                                              trace("recognized word count: "+wordCount);
      
                                                                                              //getting words from text 
                                                                                              for ( int wordIndex = 0 ; wordIndex<wordCount; wordIndex++ ){
                                                                                                  trace ("processing word number :" +wordIndex);
      
                                                                                                  IRecognizedWordInfo recognizedWordInfo = engine.CreateRecognizedWordInfo()  ; 
      
                                                                                                  if ( recognizedWordInfo == null){
                                                                                                      trace("Can't create recognizedWordInfo object using engine");
                                                                                                  }else {
                                                                                                      text.GetRecognizedWord(wordIndex, -1, recognizedWordInfo);
      
                                                                                                      //getting characters from word
                                                                                                      for (int characterIndex = 0 ; characterIndex<recognizedWordInfo.getText().length(); characterIndex++ ){
                                                                                                          trace("processing character number : " +characterIndex);
      
                                                                                                          IRecognizedCharacterInfo recognizedCharacterInfo = engine.CreateRecognizedCharacterInfo(); 
                                                                                                          if ( recognizedCharacterInfo == null) {
                                                                                                              trace("can't create recognizedCharacterInfo object");
                                                                                                          }else {
                                                                                                              recognizedWordInfo.GetRecognizedCharacter(characterIndex, -1, recognizedCharacterInfo);
      
                                                                                                              System.out.println(" Character: " + recognizedCharacterInfo.getCharacter());
                                                                                                              System.out.println(" Confidence level : " +recognizedCharacterInfo.getCharConfidence());
                                                                                                          }
                                                                                                      }
                                                                                                  }
                                                                                              }
                                                                                          }
                                                                                          System.out.println(" Field Value : " +fieldValue.getAsString());
                                                                                      }
                                                                                  }
                                                                              }
                                                                          }
                                                                      }
                                                                  }
      
                                                                  verificationGroup = verificationWorkSet.NextGroup();
                                                              }
      
                                                          }
      
                                                      }catch (Exception e){
      
                                                          e.printStackTrace();
                                                      }
      
                                                     //get next work set
                                                      verificationWorkSet =  verificationSession.NextWorkSet();
      
                                                  }
                                              }
      
                                          }catch (Exception e){
      
                                              e.printStackTrace();
                                          }
      
      
                                      }finally {
                                         verificationSession.Close();
                                      }
                                  }catch (Exception e){
      
                                      e.printStackTrace();
                                  }
      
      
                                  trace ("Getting Documents");
                                  IDocuments documents = batch.getDocuments(); 
      
                                  trace ("Getting Fields and printing");
                                  for ( int j = 0 ; j < documents.getCount(); j++){
                                      trace ("Getting documnets:" +(j+1));
      
                                      IDocument document = documents.getElement(j);
                                      IDocumentDefinition definition = document.getDocumentDefinition();
                                      assert( definition != null );
                                      assert( document.getPages().getCount() == 1 );
      
      
                                      trace( "DocumentType: " + document.getDocumentDefinition().getName() );
      
                                      try {
                                          trace("opening document");
                                          document.Open(true);
                                          IFields fields = document.getSections().Item( 0 ).getChildren();
      
                                          for( int i = 0; i < fields.getCount(); i++ ) {
                                              IField field = fields.getElement( i );
                                              trace( field.getName() + ": " + 
                                                                      ( field.getValue() != null ? field.getValue().getAsString() : "." ) );
                                          }
                                      }finally {
                                          trace("closing document");
                                          document.Close(true);
                                      }
                                  }
                              }finally {
                                      trace("Closing Batch");
                                      batch.Close();
                              }
      
                      }catch (Exception e){
                              System.out.println("Exception in creating Batch");
                              e.printStackTrace();
                      }
                      finally {
                          trace("closing project");
      
                          project.Close();
                      }
      
                      }catch (Exception e){
                          System.out.println("Exception occured while loading project");
                          e.printStackTrace();
                      }
      
              }catch (Exception e) {
                      // TODO: handle exception
                      System.out.println("Exception occured while loading engine");
                      e.printStackTrace();
              }
              finally {
                      trace("unloading Engine");
                      Engine.Unload();
      
                  }
      
          }
      
      
      
      
      }
      

Était-ce utile?

La solution

Enfin, j'ai eu ma solution, en fait, il reconnaît correctement, je les manipule de mauvaise manière ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top