我正在使用一种OCR算法(基于tesseract),该算法在识别某些字符时存在困难。我通过创建自己的“后处理哈希表”部分解决了这个问题,其中包括字符对。例如,由于文本只是数字,我已经发现如果文本中有Q
字符,则应该改为9
。
然而,我遇到了更严重的问题,即6
和8
字符都被识别为B
。现在,由于我知道我正在寻找什么(当我将图像翻译成文本时),并且字符串相当短(6〜8位数字),因此我想创建包含所有可能组合6
和8
的字符串,并将每个字符串与我正在寻找的字符串进行比较。
例如,我有以下由OCR识别的字符串:
L0B7B0B5
所以这里的每个
B
都可以是 6
或者 8
。现在我想要生成像下面这样的列表:
L0878085
L0878065
L0876085
L0876065
.
.
因此,这是一个由3位二进制数字组成的表格,在这种情况下有8个选项。但是字符串中B
字符的数量可以不是3(它可以是任何数字)。
我尝试使用Python的itertools
模块,类似于以下内容:
list(itertools.product(*["86"] * 3))
以下是结果:
这将提供以下结果:
[('8', '8', '8'), ('8', '8', '6'), ('8', '6', '8'), ('8', '6', '6'), ('6', '8', '8'), ('6', '8', '6'), ('6', '6', '8'), ('6', '6', '6')]
我认为我可以使用这个来交换B
字符。但是,由于某些原因,我无法在我的环境中使用itertools
。我猜测这与我使用的是Jython而不是纯粹的Python有关。
如果有其他完成此任务的想法,我将非常乐意听取。也许还有更简单的解决方案我没有考虑到?
itertools
应该可以工作。关于这个问题有什么疑问吗? - Veedracitertools.product
的用途。与其手动解决问题,不如尝试让itertools
在你的环境中发挥作用。 - Jinghao Shiitertools.product
,则可以轻松地复制并粘贴纯Python中的参考实现。它将使用更多的内存,但通常这不是瓶颈。 - DSM