Tesseract OCR 不能正确分割线
Tesseract OCR not splitting lines correctly
对于我的应用程序,我需要使用 OCR 从发票中提取文本。为此,我将需要扫描的发票裁剪成单独的列,并将这些裁剪后的图像放入 tesseract。对于大多数列来说,这非常有效,但有一些列不会拆分行,而是在同一字符串中输出所有内容。
我目前正在尝试的是使用 string.split() 方法,使用“\n”和“\r”作为参数。
下面的代码显示了我是如何尝试将输出拆分为字符串数组的:
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;
}
对于包含如下值的列
"product 1"
"product 2"
"product 3"
ETC
这工作得很好,但是当列包含单独的数字时,如下所示:
“1”
“4”
“12”
“6”
只有returns“14126”。
我希望任何人都能够指出我对此的解决方案。
非常感谢!
你读过 Tesseract 的 GitHub wiki 吗?这有什么帮助吗:github.com/tesseract-ocr/tesseract/wiki/ControlParams?
您可以使用 PageSegmentationMode
、PageSegMode.SingleBlock
来完成您想要的。
对于我的应用程序,我需要使用 OCR 从发票中提取文本。为此,我将需要扫描的发票裁剪成单独的列,并将这些裁剪后的图像放入 tesseract。对于大多数列来说,这非常有效,但有一些列不会拆分行,而是在同一字符串中输出所有内容。
我目前正在尝试的是使用 string.split() 方法,使用“\n”和“\r”作为参数。
下面的代码显示了我是如何尝试将输出拆分为字符串数组的:
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;
}
对于包含如下值的列 "product 1" "product 2" "product 3" ETC 这工作得很好,但是当列包含单独的数字时,如下所示: “1” “4” “12” “6”
只有returns“14126”。
我希望任何人都能够指出我对此的解决方案。 非常感谢!
你读过 Tesseract 的 GitHub wiki 吗?这有什么帮助吗:github.com/tesseract-ocr/tesseract/wiki/ControlParams?
您可以使用 PageSegmentationMode
、PageSegMode.SingleBlock
来完成您想要的。