对于我的应用程序,我需要使用 OCR 从发票中提取文本。为了实现这一目标,我将需要扫描的发票裁剪到各个列,并将这些裁剪后的图像放入超正方体中。对于大多数列来说,这都可以完美地工作,但有一些列不会分割行,并且会在同一字符串中输出所有内容。
我目前正在尝试的是使用 string.split() 方法使用“ “ 和 ” “作为参数。
下面的代码显示了我如何尝试将输出拆分为字符串数组:
public string[] ProcessFile(Image InputImage)
{
Bitmap WorkImage = new Bitmap(InputImage);
string[] Output;
Tesseract.TesseractEngine Engine = new TesseractEngine("./tessdata", "eng", EngineMode.TesseractAndCube);
Page RawOutput = Engine.Process(WorkImage);
string ConvertedOutput = RawOutput.GetText();
Output = ConvertedOutput.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None);
Engine.Dispose();
return Output;
}
对于包含以下值的列 “产品1” “产品2” “产品3” ETC 这工作得很好,但是当列包含单独的数字时,如下所示: “1” “4” “12” “6”
它只返回“14126”。
我希望任何人都能够指出我解决这个问题的方法。 非常感谢!
查看 Tesseract 的 GitHub wiki github.com/tesseract-ocr/tesseract/wiki/ControlParams
您可以使用
PageSegmentationMode
、PageSegMode.SingleBlock
来完成您正在寻找的任务。