Utilizzando MODI a OCR in C #. Hai bisogno di leggere le immagini dalla memoria, non su disco

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

  •  28-09-2019
  •  | 
  •  

Domanda

Sto cercando di utilizzare MODI per perfom OCR bitmap ho già in memoria. Io non riesco a trovare una soluzione a questo, come tutti gli esempi che ho Usa il metodo create per afferrare l'immagine dal disco e lo prepara per l'OCR., Però, ho già l'immagine sulla memoria e la scrittura e la lettura i da e per l'consuma disco troppo tempo.

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;
È stato utile?

Soluzione

Non è possibile. C'è solo una versione di Crea e ci vuole un file. Fare un file temporaneo. Salvare l'immagine in esso. Eliminare il file temporaneo. Usa Path.GetTempFileName () per farlo.

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

Altri suggerimenti

Can questa classe MODI.Document letti da un flusso? Come il

Image.FromStream(YourStream);

In questo modo è possibile creare un flusso di memoria e leggere da esso.

È possibile controllare le informazioni MODI / OCR su wikipedia

en.wikipedia.org/wiki/Microsoft_Office_Document_Imaging

en.wikipedia.org/wiki/List_of_optical_character_recognition_software

il codice più semplice per OCR un'immagine utilizzando la funzionalità Imaging di Microsoft Office (richiede MS-Office 2007 o versioni successive, i componenti di imaging devono essere installati e MODI devono essere aggiunti i riferimenti).

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; 

}

funzione di chiamata può essere:

private void button6_Click(object sender, EventArgs e)

{

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

} 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top