在使用Tesserocr -Python进行表检测方面需要帮助

时间:2019-12-02 09:31:45

标签: python computer-vision ocr tesseract python-tesseract

我正在使用python 3.7和tesseract 4.00,并且尝试使用tesseract进行表检测。

我遵循了讨论here中给出的方法,但是在当前代码中,所有元素的块类型都为1,即“未知”

作为参考,我提供了tesseract中存在的块类型的参考

  • 未知:类型未知。保持为第一要素。
  • FLOWING_TEXT:位于列中的文本。
  • HEADING_TEXT:跨越多列的文本。
  • PULLOUT_TEXT:跨列抽取区域中的文本。
  • 方程式:属于方程式区域的分区。
  • INLINE_EQUATION:分区具有嵌入式方程式。
  • TABLE:属于表区域的分区。
  • VERTICAL_TEXT:文本行垂直排列。
  • CAPTION_TEXT:属于图像的文本。
  • FLOWING_IMAGE:保留在列中的图像。
  • HEADING_IMAGE:图片超过一列。
  • PULLOUT_IMAGE:位于跨列抽取区域中的图像。
  • HORZ_LINE:水平线。
  • VERT_LINE:垂直线。
  • 噪声:位于任何列之外。
  • COUNT:计数

Tesserocr-API

TableDetector类:

__TRAINED_DATA_PATH = #Tessdata path 

def detect_table(self, image, tx_id, do_pre_process=True):
    try:
        pre_processed_image = image
        if do_pre_process:
            pre_processed_image = cvtColor(image, COLOR_BGR2GRAY)
            pre_processed_image = medianBlur(pre_processed_image, 3)
            pre_processed_image = GaussianBlur(pre_processed_image, (3, 3), 0)
        conf_score = 0

        with PyTessBaseAPI(psm=6, oem=1, lang="eng",
                           path=self.__TRAINED_DATA_PATH) as api:
            pil_image = Image.fromarray(pre_processed_image)
            api.SetImage(pil_image)


            api.SetVariable("textord_tabfind_find_tables", "true")
            api.SetVariable("textord_tablefind_recognize_tables", "true")
            api.SetVariable("textord_show_tables", "true")
            api.SetVariable("textord_tablefind_show_stats", "true")
            x=api.AnalyseLayout()
            # level = RIL.BLOCK
            for e in iterate_level(x, RIL.BLOCK):
                print(e.Orientation())
                print(e.BlockType())
    except Exception as e:
        Logger.log.error("Error in image_to_data : %s" % e, exc_info=True)

    return result_dec

0 个答案:

没有答案