可以使用Google Cloud Vision或视频智能API对视频执行OCR吗?

时间:2017-12-11 09:07:27

标签: video google-cloud-platform ocr google-cloud-vision

我已经使用了Google的Vision OCR,它非常准确。我想知道我是否可以在视频文件或视频流上进行OCR。说,我有一些监控视频,我想在整个视频中获取所有文字。在谷歌的视频智能API中,我只能获得标签,我猜测它正在使用Google Vision的标签检测API。我认为OCR在每一帧视频上可能都会遇到挑战,但仍然想尝试开始讨论如何做到这一点。可能没有一个完美的解决方案,但即使我们获得了50%,它总比没有好。

3 个答案:

答案 0 :(得分:1)

这是我做的:

  1. 访问此网站下载此样本免费视频: https://www.videvo.net/video/people-walking-past-the-911-memorial-sign-in-new-york/5283/

  2. 下载并安装VLC视频播放器

  3. 按照本教程中的步骤从视频中提取图像:

    一个。转到工具 - >喜好。在左下方的cofner中,单击单选按钮“All”。

    湾单击左侧的视频类别以展开它。再次点击“过滤器”以展开它。

    ℃。选择“场景过滤器”并选择设置(参见下图)。

    enter image description here

    d。单击过滤器类别,然后选中“场景视频过滤器”复选框(参见下图)

    enter image description here

    即点击右下角的“保存”后,打开您下载的视频并播放。图像将自动保存。

    更多详情here

  4. 转到此CLOUD VISION API页面,您可以拖放任何生成的图片,以查看API功能的示例。

答案 1 :(得分:1)

以下是使用Google Cloud Vision API制作视频的FFmpeg + Python方法:

  1. 使用FFmpeg:

    将视频中的帧提取到frames_path目录
    import os
    import subprocess
    
    def extract_frames_from_video(video_path, frames_path):
        subprocess.call("ffmpeg -r 1 -i {video_path} -r 1 {out_path}".format(
            video_path=video_path,
            out_path=os.path.join(frames_path, "frame_%06d.png")), shell=True)
    
  2. 为提取的帧调用Vision API。

  3. 如果要突出显示图像中的检测项,然后从处理过的帧中重建视频,可以使用以下方法:

    1. 从框架中创建无声视频:

      def convert_frames_to_video(frames_path, output_video_path, fps):
          subprocess.call(
              "ffmpeg -r {frame_rate} -f image2 " 
              "-i {frames_path} -vcodec libx264 -crf {quality} -pix_fmt yuv420p "
              "{out_path}".format(
                  frame_rate=fps,
                  frames_path=os.path.join(frames_path, "frame_%06d.png"),
                  quality=15,  # Lower is better
                  out_path=output_video_path), shell=True)
      
    2. 将输入视频中的声音添加到最终输出视频中:

      def add_sound_from_video_to_video(sound_video_path, soundless_video_path,
                                        output_video_path):
          subprocess.call(
              "ffmpeg "
              "-i {video_path_without_audio} "
              "-i {video_path_with_audio} "
              "-c copy -map 0:0 -map 1:1 -shortest {output_video_path}".format(
                  video_path_without_audio=soundless_video_path,
                  video_path_with_audio=sound_video_path,
                  output_video_path=output_video_path), shell=True)
      
    3. Here是我为面部检测编程的整个管道。

答案 2 :(得分:0)

现在,Google Cloud Video Intelligence API为视频提供了OCR。它汇总了来自多个帧的检测,与单帧OCR检测相比,它提供了更一致的结果。您可以在https://cloud.google.com/video-intelligence/docs/text-detection中检查该功能。