gpt4 book ai didi

python - 我可以在 python 中以百分比精度执行 "string contains X"吗?

转载 作者:太空狗 更新时间:2023-10-29 17:10:36 25 4
gpt4 key购买 nike

我需要对一大块文本进行一些 OCR,并检查它是否包含特定字符串,但由于 OCR 的不准确性,我需要它来检查它是否包含大约 85% 匹配的字符串。

例如,我可能对一段文本进行 OCR 以确保它不包含无可用信息,但 OCR 可能会看到n0 information available 或误解了一些字符。

有没有在 Python 中执行此操作的简单方法?

最佳答案

正如 gauden 所言,difflib 中的 SequenceMatcher 是一个简单的方法。使用 ratio(),返回一个介于 01 之间的值,对应于两个字符串之间的相似性,来自文档:

Where T is the total number of elements in both sequences, and M is the number of matches, this is 2.0*M / T. Note that this is 1.0 if the sequences are identical, and 0.0 if they have nothing in common.

例子:

>>> import difflib
>>> difflib.SequenceMatcher(None,'no information available','n0 inf0rmation available').ratio()
0.91666666666666663

还有 get_close_matches,这可能对你有用,你可以指定一个距离截止点,它会返回列表中该距离内的所有匹配项:

>>> difflib.get_close_matches('unicorn', ['unicycle', 'uncorn', 'corny', 
'house'], cutoff=0.8)
['uncorn']
>>> difflib.get_close_matches('unicorn', ['unicycle' 'uncorn', 'corny',
'house'], cutoff=0.5)
['uncorn', 'corny', 'unicycle']

更新:找到部分子序列匹配

要找到与三词序列的紧密匹配,我会将文本拆分为词,然后将它们分组为三词序列,然后应用 difflib.get_close_matches,如下所示:

import difflib
text = "Here is the text we are trying to match across to find the three word
sequence n0 inf0rmation available I wonder if we will find it?"
words = text.split()
three = [' '.join([i,j,k]) for i,j,k in zip(words, words[1:], words[2:])]
print difflib.get_close_matches('no information available', three, cutoff=0.9)
#Oyutput:
['n0 inf0rmation available']

关于python - 我可以在 python 中以百分比精度执行 "string contains X"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10849141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com