我正在一个项目中,我试图通过扫描整个药品包来提取药品名称。例如-
下面是包含名为“ Health OK”的平板电脑信息的图像。
我的问题是,是否可以通过扫描或使用此图像仅提取平板电脑的名称,即“健康状况良好”?
我尝试过使用Pytesseract,但它没有为我提供理想的结果。下面是代码-
from PIL import Image
import pytesseract, re
f = "ocr.jpg"
t = pytesseract.image_to_string(Image.open(f))
print(t)
m = re.findall(r"[\d—-]+ TABLETS [\d—-]+", t)
if m:
print(m[0])
使用ANN或CNN模型是否有可能的解决方案?
答案 0 :(得分:0)
我对此的看法是为要提取的所需文本创建一个变量。在图像上运行OCR之后,也将其输出存储在列表中。 例如:
disired_text = 'Health OK'
OCR_output = ['Multivitamin', 'Multiminerals', 'Amino Acids', 'with Taurine', 'Health OK']
有了这些列表后,就可以使用任何字符串匹配算法(例如模糊匹配)从 OCT_output列表中提取最佳匹配项。 例如:
score_dict = {} #initializing dictionary to store text and score
for output_text in OCR_output:
score = fuzzy_match_function(output_text, desired_text)
score_dict[output_text] = score
您将获得一个包含文本和乐谱的score_dict(字典)。您可以使用所需变量提取距离最小的对象。
希望这对您有用!
答案 1 :(得分:0)
如果您有足够的样本,可以通过标记感兴趣的文本区域以提取或识别该区域,然后将该区域提供给OCR进行提取来训练模型。 从我所看到的神经网络,如果您有足够的数据进行训练。可能您可以在已经训练好的模型上使用某种转移学习。 如果没有标签数据,则可以使用市售的注释工具来标记要培训的兴趣区域。