Я пытался получить текст из определенной области изображения .tiff, используя tesseract ocr в c #. Когда я сначала нажал кнопку StartOcr, Tesseract работал правильно
Когда я нажал кнопку StartOcr Второе, Tesseract работал правильно, но
Когда я нажал кнопку StartOcr Во-вторых, Tesseract не работал должным образом. Он показывал ошибку типа «Не удалось создать пиксель, это обычно происходит из-за того, что запрашиваемый размер изображения слишком велик, пожалуйста, проверьте стандартный вывод ошибок». в этой строке => var page = ocr.Process (изображение, регион); Кто-нибудь может помочь? Вот некоторая часть моего кода:
public struct FormFields
{
public const int FIRMA_UNVAN_FROM_X = 500;
public const int FIRMA_UNVAN_TO_X = 1700;
public const int FIRMA_UNVAN_FROM_Y = 1300;
public const int FIRMA_UNVAN_TO_Y = 1500;
public const int TARIH_FROM_X = 2010;
public const int TARIH_TO_X = 2850;
public const int TARIH_FROM_Y = 2280;
public const int TARIH_TO_Y = 2430;
public const int FATURA_NO_FROM_X = 610;
public const int FATURA_NO_TO_X = 1190;
public const int FATURA_NO_FROM_Y = 2710;
public const int FATURA_NO_TO_Y = 2890;
}
private string getTextFromOcr(Bitmap image, int fromX, int toX, int fromY, int toY)
{
using (TesseractEngine ocr = new TesseractEngine("./tessdata", "tur", EngineMode.Default))
{
Rect region = new Rect(fromX, fromY, toX - fromX, toY - fromY);
var page = ocr.Process(image, region);
return page.GetText();
}
}
private void btnStartOcr_Click(object sender, EventArgs e)
{
string filename = DateTime.Now.ToString("yyyyMMddHHmm");
log("OriginalFile = " + txtSourceFile.Text);
log("ModifiedFile = " + filename);
using (var img = new Bitmap(txtSourceFile.Text))
{
#region OCR
DateTime startTime = DateTime.Now;
txtResult.Text = startTime.ToString("dd-MM-yyyy HH:mi:ss");
txtResult.Text += Environment.NewLine;
txtResult.Text += "Firma = " + getTextFromOcr(img, FormFields.FIRMA_UNVAN_FROM_X, FormFields.FIRMA_UNVAN_TO_X, FormFields.FIRMA_UNVAN_FROM_Y, FormFields.FIRMA_UNVAN_TO_Y);
txtResult.Text += Environment.NewLine; ;
txtResult.Text += "Tarih = " + getTextFromOcr(img, FormFields.TARIH_FROM_X, FormFields.TARIH_TO_X, FormFields.TARIH_FROM_Y, FormFields.TARIH_TO_Y);
txtResult.Text += Environment.NewLine;
txtResult.Text += "FatNo = " + getTextFromOcr(img, FormFields.FATURA_NO_FROM_X, FormFields.FATURA_NO_TO_X, FormFields.FATURA_NO_FROM_Y, FormFields.FATURA_NO_TO_Y);
DateTime endTime = DateTime.Now;
TimeSpan ts = endTime - startTime;
log("OCR = " + ts.TotalMilliseconds.ToString());
#endregion OCR
}
log(txtResult.Text);
}