Python |从屏幕抓取应用程序中整理出多余的文字

时间:2018-08-31 15:44:40

标签: python algorithm

我正在编写一个屏幕抓取应用程序,用于监视纯文本聊天窗口。文本被添加到窗口的底部。

应用程序获取聊天窗口的屏幕截图。如果自上一个屏幕快照(new_screenshot!= old_screenshot)以来发生了更改,则屏幕快照将被保存。

X时间后,所有图像将合并为一张图像,最旧的图像位于顶部。该大图像被发送到服务器进行OCR,并返回文本字符串。

问题:如何整理多余的文字?

示例:

  • 聊天窗口高5行,最初是空的。
  • 该解决方案必须与空且非空的初始聊天窗口一起使用。
  • 每个屏幕截图可以添加多行。同一行可以多次出现,但不能连续两次出现,因此仅进行重复数据删除是不够的(因此,使用sorted(set(text.split('\n')))是不够的)

算法输入:

1个Lorem ipsum dolor坐在amet,
1 Lorem ipsum dolor坐在amet,
2个连续的高级培训
1 Lorem ipsum dolor坐在amet,
2个连续的高级培训
3毛里斯·波特图尼(Mauris Porttitor)希望在国际法庭任职。
1 Lorem ipsum dolor坐在amet,
2个连续的高级培训
3毛里斯·波特图尼(Mauris Porttitor)希望在国际法庭任职。
4 Morbi elementum erat nec nulla auctor,eget porta odio aliquet。
1 Lorem ipsum dolor坐在amet,
2个连续的高级培训
3毛里斯·波特图尼(Mauris Porttitor)希望在国际法庭任职。
4 Morbi elementum erat nec nulla auctor,eget porta odio aliquet。
5 Nam aliquet velit vel elementum tristique。
2名秘诀高手
3毛里斯(Mauris)Porttitor希望在Interdum上签字。
4 Morbi elementum eart nec nulla auctor,eget porta odio aliquet。
5 Nam aliquet velit vel elementum tristique。
6 Donec ac tincidunt urna。
3毛里斯·波特图尼(Mauris Porttitor)希望在国际法庭任职。
4 Morbi elementum erat nec nulla auctor,eget porta odio aliquet。
5 Nam aliquet velit vel elementum tristique。
6 Donec ac tincidunt urna。
7 Proin t,不可食的罗伯蒂斯,torm sem rhoncus urna
4 Morbi elementum erat nec nulla auctor,eget porta odio aliquet。
5 Nam aliquet velit vel elementum tristique。
6 Donec ac tincidunt urna。
7 Proin t,不可食的罗伯蒂斯,torm sem rhoncus urna
8 quis finibus leo lorem sed lacus。
5 Nam aliquet velit vel elementum tristique。
6 Donec ac tincidunt urna。
7 Proin t,不可食的罗伯蒂斯,torm sem rhoncus urna
8 quis finibus leo lorem sed lacus。
1 Lorem ipsum dolor坐在amet,

预期结果:

1个Lorem ipsum dolor坐在amet,
2名秘诀高手
3毛里斯(Mauris)Porttitor希望在Interdum上签字。
4 Morbi elementum eart nec nulla auctor,eget porta odio aliquet。
5 Nam aliquet velit vel elementum tristique。
6 Donec ac tincidunt urna。
7 Proin t,不可食的罗伯蒂斯,tor sem rhoncus urna
8 quis finibus leo lorem sed lacus。
1 Lorem ipsum dolor坐在amet,

1 个答案:

答案 0 :(得分:1)

这是我想要的代码(添加新行,但保留5行的历史记录以避免重复):

history = 5
lastSeen = dict()
result = [] 
for idx, line in enumerate(text.split('\n')):
    if line not in lastSeen:
        result.append(line)
    else:
        if lastSeen[line] + history < idx:
            result.append(line)
    lastSeen[line] = idx