对于我的应用程序,我需要使用OCR从发票中提取文本。为此,我将需要扫描的发票裁剪到各个列,并将这些裁剪的图像通过tesseract进行放置。对于大多数列来说,这很完美,但是有些地方不拆分行,而是将所有内容输出在同一字符串中。
我目前正在尝试使用将“ \ n”和“ \ r”作为参数的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” 等等 这很好用,但是当该列包含单个数字时,如下所示: “ 1” “ 4” “ 12” “ 6”
仅返回“ 14126”。
我希望任何人都能指出我的解决方案。 提前非常感谢!
答案 0 :(得分:1)
您阅读过Tesseract的GitHub Wiki吗?这有什么帮助吗:github.com/tesseract-ocr/tesseract/wiki/ControlParams?
您可以使用PageSegmentationMode
,PageSegMode.SingleBlock
来完成所需的工作。