如何使用tesseract OCR文档中的多列

时间:2015-07-27 10:45:37

标签: c++ ocr tesseract

我正在使用tesseract开展OCR sinhala语言项目。我的目标是ocr,多列包括文档中的文本。并以正确的格式输出文件。有没有方法使用tesseract识别文档中的列?

2 个答案:

答案 0 :(得分:2)

将tesseract设置为使用多列文档非常容易,尽管我在网上发现很少或专门讨论多列页面的信息。基本思想是将页面分割方法设置为同时执行“自动页面分割”(默认)和“方向和脚本检测”(OSD,而不是默认设置)。

这就像将psm设置为1一样简单,它告诉tesseract“使用OSD进行自动页面分割”。尽管OSD =识别多列文档可能并不明显,但实际上这是结果之一。另一个好处是,脚本检测有助于tesseract避免尝试OCR非文本块(例如照片)。

有关页面细分方法的更多信息,请参见:https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality

以下是用于调整页面细分方法的命令行语法示例

tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]

有关语法的更多信息,请参见:https://github.com/tesseract-ocr/tesseract/wiki

答案 1 :(得分:0)

您可以尝试使用以下解决方案在我们扫描图片时识别列。

TessBaseAPI baseApi = new TessBaseAPI();
 baseApi.setDebug(true);
 baseApi.init(DATA_PATH, lang); //DATA_PATH - Where Image stored and lang - en(english)
 baseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_SINGLE_COLUMN);//This line will help us to do segment for captured image - Hope you looking for this line
 baseApi.setImage(bitmap);

 //Recognized Text after capturing image then process it.
 String recognizedText = baseApi.getUTF8Text();

如果您不希望使用此解决方案,请尝试使用PageSegMode,希望它可以解决您的问题。