Использование MODI для распознавания текста в C #. Нужно читать изображения из памяти, а не с диска - PullRequest
0 голосов
/ 02 ноября 2010

Я пытаюсь использовать MODI для воспроизведения OCR на растровых изображениях, которые у меня уже есть в памяти. Кажется, я не могу найти решение этой проблемы, так как все примеры, которые я нахожу, используют метод create, чтобы извлечь изображение с диска и подготовить его к распознаванию текста. Однако у меня уже есть изображение в памяти, запись и чтение. с диска занимает слишком много времени.

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;

Ответы [ 4 ]

4 голосов
/ 02 ноября 2010

Вы не можете. Существует только одна версия Create, и она занимает файл. Сделайте временный файл. Сохраните изображение в это. Удалить временный файл. Используйте Path.GetTempFileName () для этого.

string file = Path.GetTempFileName();
try {
    SaveImageToFile(image, file); // you decide how to best do this
    md.Create(file);
    // etc.
}
finally {
    File.Delete(file);
}
0 голосов
/ 26 августа 2011

Простейший код для оптического распознавания изображений с использованием функций обработки изображений Microsoft Office (требуется MS-Office 2007 или более поздняя версия, необходимо установить компоненты обработки изображений и добавить MODI в ссылки)

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; 

}

Функция вызова может быть:

private void button6_Click(object sender, EventArgs e)

{

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

} 
0 голосов
/ 10 ноября 2010

Вы можете проверить информацию о MODI / OCR в википедии

en.wikipedia.org / wiki / Microsoft_Office_Document_Imaging

en.wikipedia.org / wiki / List_of_optical_character_recognition_software

0 голосов
/ 02 ноября 2010

Может ли этот класс MODI.Document читать из потока?Как

Image.FromStream(YourStream);

Таким образом, вы можете создать поток памяти и читать из него.

...