当前位置: 首页 > wzjs >正文

网站制作app软件百度小说搜索风云榜总榜

网站制作app软件,百度小说搜索风云榜总榜,广州公司注册需要什么条件,云南手机网站制作引言 在智能交通、地图定位等应用场景中,经常会遇到需要从图像中提取经纬度信息的需求。本篇文章将介绍如何利用 Python 的 pytesseract 库结合 PIL 对图像进行预处理,通过固定区域裁剪,来有效地识别出图像上显示的经纬度信息。 1. OCR 与 …

引言

在智能交通、地图定位等应用场景中,经常会遇到需要从图像中提取经纬度信息的需求。本篇文章将介绍如何利用 Python 的 pytesseract 库结合 PIL 对图像进行预处理,通过固定区域裁剪,来有效地识别出图像上显示的经纬度信息。

1. OCR 与 pytesseract 简介

OCR(Optical Character Recognition,光学字符识别)技术能够将图片中的文字信息转换成可编辑的文本。Tesseract 是一款开源的 OCR 引擎,功能强大且准确率较高;而 pytesseract 则是其 Python 封装,可以方便地在 Python 项目中调用 Tesseract 进行识别。

在我们的示例中,我们主要针对图像上固定位置的经纬度区域进行处理与识别。由于经纬度中只包含数字、小数点、°、N、S、E、W 等字符,我们可以通过设置 白名单 限制识别字符,从而提高识别准确率

2.示例代码

下面给出完整示例代码,并附带详细的注释说明每一步的实现逻辑:

import time
import pytesseract
from PIL import Image, ImageFilter, ImageEnhanceclass OCRReader:def __init__(self, center_x, center_y, width, height, sharpness=2.0, contrast=2.0, blur_radius=1):"""初始化 OCRReader 类,使用中心点和宽高设置裁剪区域的参数,并配置图像预处理的超参数。参数:center_x (int): 经度/纬度信息区域中心点的 x 坐标(从左向右)center_y (int): 经度/纬度信息区域中心点的 y 坐标(从上向下)width (int): 裁剪区域的宽度height (int): 裁剪区域的高度sharpness (float): 锐化处理的增强系数,数字越大效果越明显contrast (float): 对比度增强系数,数字越大表示对比度越明显blur_radius (float): 高斯模糊的半径,主要用于图像降噪"""self.center_x = center_xself.center_y = center_yself.width = widthself.height = heightself.sharpness = sharpnessself.contrast = contrastself.blur_radius = blur_radius# 对于经纬度,白名单中仅包含数字、°、小数点以及方向字符self.whitelist = "0123456789°.NSEW"def preprocess_image(self, img):"""对裁剪后的图像进行预处理:包括图像的锐化、对比度增强以及高斯模糊降噪。参数:img (Image): PIL 图像对象返回:Image: 预处理后的图像对象"""# 锐化处理,增强图像细节sharpener = ImageEnhance.Sharpness(img)img = sharpener.enhance(self.sharpness)# 增强对比度,使文字更明显enhancer = ImageEnhance.Contrast(img)img = enhancer.enhance(self.contrast)# 应用高斯模糊降噪if self.blur_radius > 0:img = img.filter(ImageFilter.GaussianBlur(self.blur_radius))return imgdef read_coordinates(self, image_path):"""从给定图像文件中提取经纬度信息。参数:image_path (str): 图像文件的路径返回:str: OCR 识别出的文本"""# 加载图像img = Image.open(image_path)# 如果图像带有透明度,则将其转换为 RGB 模式(填充背景为白色)if img.mode == 'RGBA':background = Image.new('RGB', img.size, (255, 255, 255))background.paste(img, mask=img.split()[3])img = backgroundelif img.mode == 'LA':background = Image.new('L', img.size, 255)background.paste(img, mask=img.split()[1])img = background.convert('RGB')# 根据中心点坐标和宽高,计算出裁剪区域的左上角和右下角坐标left = self.center_x - self.width // 2top = self.center_y - self.height // 2right = self.center_x + self.width // 2bottom = self.center_y + self.height // 2# 裁剪图像得到经纬度显示区域cropped_img = img.crop((left, top, right, bottom))cropped_img.save('sub_img.jpg')  # 保存裁剪后的图像,便于调试# 对裁剪后的图像进行预处理processed_img = self.preprocess_image(cropped_img)processed_img.save('processed_sub_img.jpg')  # 保存预处理后的图像,便于调试# 配置 Tesseract 的识别参数:# --psm 6 表示将图像看作单一文本块# tessedit_char_whitelist 限定识别的字符集custom_config = f'--psm 6 -c tessedit_char_whitelist={self.whitelist}'result = pytesseract.image_to_string(processed_img, config=custom_config, timeout=1)return result# 示例使用
if __name__ == '__main__':ocr_reader = OCRReader(center_x=1440, center_y=802, width=204, height=20)t1 = time.time()result = ocr_reader.read_coordinates('./ocr_test.png')print("\n识别结果:", result)print(f"Time: {time.time() - t1}")

2.1 类的初始化与参数设定

  • center_x 与 center_y:代表图像中经纬度展示区域的中心坐标。
  • width 与 height:定义裁剪区域的尺寸。
  • sharpness、contrast 和 blur_radius:预处理步骤中用于改善图像质量的参数。
  • whitelist:指定 OCR 识别时只允许出现的字符,本例中仅包含经纬度所必需的字符。

2.2 图像预处理

预处理步骤主要有三个:

  • 锐化:通过 ImageEnhance.Sharpness 增加图像的细节,帮助提高文字的边缘清晰度。
  • 对比度增强:利用 ImageEnhance.Contrast 调整图像的对比度,使目标文字更醒目。
  • 高斯模糊:适当的模糊可以起到降噪的作用,有利于提高 OCR 的识别率。

2.3 裁剪与 OCR 识别

  • 裁剪区域计算:通过中心点和尺寸参数计算出目标区域的四个边界的坐标,然后使用 crop 方法裁剪图像。
  • 透明度处理:有的图像可能带有透明通道(如 PNG 图片),通过转换为 RGB 模式确保 OCR 引擎能够正确处理。
  • OCR 参数配置:设置 --psm 6 以适应单一文本块的场景,并通过白名单限制识别字符范围,进一步提高识别准确性。
  • 超时设置:timeout=1 参数确保在识别超时时不会阻塞程序。
    在这里插入图片描述

3. 总结与扩展

通过本文示例,我们展示了如何利用 pytesseract 进行专门的区域 OCR 识别,并结合图像预处理技术提升识别率。在实际项目中,你可以根据图像质量和识别场景进一步调整预处理参数,比如增加二值化处理、去背景等操作。

此外,若图像中包含不同区域的文本信息,可扩展代码实现批量处理和区域定位,从而用于更大规模的自动化识别任务。

http://www.dtcms.com/wzjs/250578.html

相关文章:

  • 网站颜色搭配案例做抖音seo排名软件是否合法
  • 网站建设验收汇报中国万网域名注册免费
  • 做付费下载的网站广告联盟app下载赚钱
  • 网站建设案例行业现状专注于网站营销服务
  • 网站域名被注册seo咨询
  • 软件公司做网站镇江网站建站
  • 温州建设集团网站资源搜索
  • 手机导航网站模板郑州百度快照优化
  • 网站域名打不开网络营销有哪些内容
  • 做网店的网站镇江百度关键词优化
  • 如何在手机上做自己的网站长沙seo免费诊断
  • 做网站可以赚钱吗安徽网站关键词优化
  • 使用php如何做购物网站怎么在百度上发布自己的信息
  • 诛仙2官方网站西施任务怎么做苏州seo网络推广
  • 做篮球视频网站拓客软件排行榜
  • wordpress 4.8 中文包seo排名培训
  • 定制开发电商网站建设多少钱seo网站推广技术
  • 武汉 网站建设公司seo站长教程
  • 怎样建立自己的网站卖东西优化关键词可以选择哪个工具
  • 网站工信部不备案吗推广哪个app最挣钱
  • wordpress悬赏功能实现河北搜索引擎优化
  • 机械厂做网站销售管理
  • 郑州网站制作设计广告公司怎么找客户资源
  • 哪个网站卖自己做的手工艺品买卖链接网
  • 做网站目录国际新闻最新消息10条
  • wordpress开启多站点模式第三方营销策划公司有哪些
  • 接给别人做网站的活关键词查询工具有哪些
  • 网站建设福建适合女生去的培训机构
  • 网站哪家公司做得好windows优化大师卸载
  • 用java做网站验证码怎么写百度seo关键词优化公司