You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask项目植物上传图片真实性验证优化方案咨询

植物图片原创验证Flask项目需求补充

我正在开发一个Python Flask项目,核心功能是验证用户上传的图片,确保其真实无抄袭。当前核心需求是:用户上传植物图片时,必须确认图片为用户自行拍摄,而非来自网络或平台内其他用户。

目前我已经完成了以下初步检查,但仍存在不足,现寻求补充方案:

  • A)图片质量检测
  • B)网络图片检测
  • C)数据库重复检测
  • D)经纬度验证(效果极差,误差达2公里)
  • E)植物图片校验

由于现有定位方法存在漏洞且效果不佳,项目无需超高安全级别,希望找到可替代精准定位的同类技术或方案,以此确保图片为用户原创。

以下是当前使用的定位相关代码:

# EXIF提取函数
def get_exif_data(image_path):
    """使用ExifRead从图片文件中获取嵌入的EXIF数据。"""
    with open(image_path, 'rb') as image_file:
        tags = exifread.process_file(image_file)
    return tags

def get_gps_data(tags):
    """从EXIF标签中提取GPS数据。"""
    gps_data = {}
    gps_keys = ['GPS GPSLatitude', 'GPS GPSLatitudeRef', 'GPS GPSLongitude', 'GPS GPSLongitudeRef']
    for key in gps_keys:
        if key in tags:
            gps_data[key] = tags[key]
    return gps_data

def convert_to_degrees(value):
    """将GPS坐标转换为度数,避免除零错误。"""
    def safe_div(num, den):
        return float(num) / float(den) if den != 0 else 0

    if len(value.values) != 3:
        print("GPS坐标数据不完整。")
        return None

    d = safe_div(value.values[0].num, value.values[0].den)
    m = safe_div(value.values[1].num, value.values[1].den)
    s = safe_div(value.values[2].num, value.values[2].den)
    return d + (m / 60.0) + (s / 3600.0)

def get_lat_lon(gps_data):
    """从GPS数据中提取纬度和经度。"""
    lat = None
    lon = None

    gps_latitude = gps_data.get('GPS GPSLatitude')
    gps_latitude_ref = gps_data.get('GPS GPSLatitudeRef')
    gps_longitude = gps_data.get('GPS GPSLongitude')
    gps_longitude_ref = gps_data.get('GPS GPSLongitudeRef')

    if gps_latitude and gps_latitude_ref and gps_longitude and gps_longitude_ref:
        lat = convert_to_degrees(gps_latitude)
        lon = convert_to_degrees(gps_longitude)

        if lat is None or lon is None:
            return None, None

        if gps_latitude_ref.values[0] != 'N':
            lat = -lat
        if gps_longitude_ref.values[0] != 'E':
            lon = -lon

    return lat, lon

def extract_gps_from_image(image_path):
    tags = get_exif_data(image_path)
    gps_data = get_gps_data(tags)
    lat, lon = get_lat_lon(gps_data)
    return lat, lon

内容的提问来源于stack exchange,提问作者Preran S Gowda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:43:24