El uso de MODI a OCR en C #. Necesidad de leer las imágenes de la memoria, no en disco

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

  •  28-09-2019
  •  | 
  •  

Pregunta

Estoy tratando de utilizar MODI al proceso de OCR a los mapas de bits que ya tengo en la memoria. Me parece que no puede encontrar una solución a esto como todos los ejemplos I Use el método de crear para tomar la imagen desde el disco y lo prepara para el reconocimiento de caracteres. Sin embargo, ya tengo la imagen en la memoria y la escritura y la lectura i desde y hacia el disco consume demasiado tiempo.

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;
¿Fue útil?

Solución

No se puede. Sólo hay una versión de crear y que se necesita un archivo. Hacer un archivo temporal. Guarda la imagen en ella. Borrar el archivo temporal. Uso Path.GetTempFileName () para hacer eso.

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

Otros consejos

Puede esta clase MODI.Document leen de una corriente? Al igual que el

Image.FromStream(YourStream);

De esta manera se puede crear una secuencia de memoria y leer de él.

Puede comprobar la información MODI / OCR en Wikipedia

en.wikipedia.org/wiki/Microsoft_Office_Document_Imaging

en.wikipedia.org/wiki/List_of_optical_character_recognition_software

código más simple a OCR una imagen utilizando la funcionalidad de imagen de Microsoft Office (requiere MS-Office 2007 o posterior, componentes de imagen deben ser instalados y MODI se deben añadir a las referencias).

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; 

}

función de llamada puede ser:

private void button6_Click(object sender, EventArgs e)

{

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

} 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top