遇到网页字体加密,获取不到真实数据怎么办?
回答
收藏

遇到网页字体加密,获取不到真实数据怎么办?

橙思为
2023-10-23 20:57·浏览量:397
橙思为
影刀见习开发者
发布于 2023-10-23 20:57397浏览

影刀可以模拟人工所见即所得获取到网页上所有数据,通过影刀获取网页上的数据很方便,但是遇到字体加密的网页,影刀获取出来的数据是一个个框。

例如下面这个店铺访客数在网页源码上显示是加密后的字体

用影刀怎么获取到正确的数据?

方案一:字体解密

优点:获取数据准确

缺点:解密难,通用性差

方案二:用影刀网页元素截图,然后用付费OCR进行识别

优点:获取数据准确,通用性强,门槛低

缺点:收费

方案三:用影刀网页元素截图,然后用影刀离线OCR进行识别

优点:免费,数据准确

缺点:为了保证识别准确,需要先对截图图片做一些预处理


下面具体讲讲方案三怎么做

需要识别的图片:

图片大小如下:

不对图片进行处理的识别结果:

对图片进行处理后的识别结果:

对图片处理代码如下:

from PIL import Image
target = Image.open(r'C:\Users\lll\Downloads\付款金额.png')
target = target.convert('RGBA')
img_array = target.load()
width, height = target.size
for x in range(0, width):
    for y in range(0, height):
        rgb = img_array[x, y]
        r = rgb[0]
        g = rgb[1]
        b = rgb[2]
        a = rgb[3]
        if r > 0 | g > 0 | b > 0 :
            img_array[x, y] = (r, g, b, 0)

r, g, b, a = target.split()
img = Image.new('RGB', (256, 256), (255, 255, 255))
img = img.convert('RGBA')
img.paste(target, (100, 100), mask=a)
img.save(r'C:\Users\lll\Downloads\付款金额1.png')

总结一下:

1.如果ocr需求量比较大的话,能用免费的就不用收费的

2.影刀离线ocr还是比较准的,只不过在识别一些比较小的图片(60像素x15像素)就很容易扑街

3.对于这个只用两种颜色的图片,可以突出一种颜色, 对其他颜色做透明处理,再把图片放大,更加适合影刀离线OCR

收藏
全部回答1
最新
发布回答
回答