En utilisant Modi OCR en C #. Vous avez besoin de lire des images de la mémoire, et non du disque

StackOverflow https://stackoverflow.com/questions/4081335

  •  28-09-2019
  •  | 
  •  

Question

Je suis en train d'utiliser Modi perfom OCR sur bitmaps je l'ai déjà en mémoire. Je ne peux pas sembler trouver une solution à ce que tous les exemples que je trouve utiliser la méthode create pour saisir l'image à partir du disque et prépare pour l'OCR. Cependant, je l'ai déjà l'image sur la mémoire et l'écriture et la lecture i et à partir du disque consomme trop de temps.

Bitmap bmp = ...
//Instantiate the MODI.Document object
MODI.Document md = new MODI.Document();
//The Create method grabs the picture from disk snd prepares for OCR.          
md.Create("C:\\bmp.gif"); //but I don't want to read from disk :(
//Do the OCR.
md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);
//Get the first (and only image)
MODI.Image image = (MODI.Image)md.Images[0];
//Get the layout.
MODI.Layout layout = image.Layout;
Était-ce utile?

La solution

Vous ne pouvez pas. Il n'y a qu'une seule version de Créer et il faut un fichier. Faire un fichier temporaire. Enregistrez l'image en elle. Supprimez le fichier temp. Utilisez Path.GetTempFileName () pour le faire.

string file = Path.GetTempFileName();
try {
    SaveImageToFile(image, file); // you decide how to best do this
    md.Create(file);
    // etc.
}
finally {
    File.Delete(file);
}

Autres conseils

Can cette MODI.Document classe lu dans un flux? Comme le

Image.FromStream(YourStream);

De cette façon, vous pouvez créer un flux de mémoire et lire.

Vous pouvez vérifier les informations MODI / OCR sur wikipedia

en.wikipedia.org/wiki/Microsoft_Office_Document_Imaging

en.wikipedia.org/wiki/List_of_optical_character_recognition_software

Code OCR pour Simplest une image en utilisant la fonctionnalité d'imagerie de Microsoft Office (nécessite MS-Office 2007 ou plus tard, les composants d'imagerie doivent être installés et MODI doivent être ajoutées aux références).

private string OCR ( string fileToOCR)

{

MODI.Document md = new MODI.Document();

md.Create(fileToOCR);

md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true);

MODI.Image img = (MODI.Image) md.Images[0];

MODI.Layout layout = img.Layout;

layout = img.Layout;

string result = layout.Text;

md.Close (false);


return result; 

}

L'appel peut être fonction:

private void button6_Click(object sender, EventArgs e)

{

MessageBox.Show ( OCR ("C:\\temp\\in.tif")); 

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