Mit MODI zu OCR in C #. Benötigen Sie Bilder aus dem Speicher zu lesen, nicht Datenträger

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

  •  28-09-2019
  •  | 
  •  

Frage

Ich versuche MODI zu verwenden, um perfom OCR auf Bitmaps Ich habe bereits im Speicher. Ich kann nicht scheinen, eine Lösung für dieses wie alle Beispiele zu finden, ich finde die Methode zu erstellen, das Bild von der Platte zu packen und bereitet es für die OCR., Aber ich habe schon das Bild auf Speicher und das Schreiben und Lesen i auf und von der Platte zu viel Zeit in Anspruch nimmt.

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;
War es hilfreich?

Lösung

Sie können nicht. Es gibt nur eine Version erstellen und es dauert eine Datei. Machen Sie eine temporäre Datei. Speichern Sie das Bild hinein. Löschen Sie die temporäre Datei. Verwenden Path.GetTempFileName (), das zu tun.

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

Andere Tipps

Mit dieser MODI.Document Klasse aus einem Stream gelesen? Wie die

Image.FromStream(YourStream);

Auf diese Weise können Sie einen Speicher-Stream erstellen und daraus lesen.

Sie können MODI / OCR Informationen überprüfen Wikipedia

en.wikipedia.org/wiki/Microsoft_Office_Document_Imaging

en.wikipedia.org/wiki/List_of_optical_character_recognition_software

Einfachstes Code OCR ein Bild mithilfe von Microsoft Office Imaging-Funktionalität (erfordert MS-Office 2007 oder später müssen Imaging-Komponenten installiert und MODI werden müssen, um Referenzen hinzugefügt werden).

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; 

}

Funktion aufrufen können sein:

private void button6_Click(object sender, EventArgs e)

{

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

} 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top