code: def create_gradio_app(self):
      import gradio as gr
  
      def inference(
          image,
          use_gpu=False,
          box_thresh=0.5,
          text_thresh=0.5,
          angle_classification_thresh=0.9,
      ):
          return self.recognize_text(
              paths=[image],
              use_gpu=use_gpu,
              output_dir=None,
              visualization=False,
              box_thresh=box_thresh,
              text_thresh=text_thresh,
              angle_classification_thresh=angle_classification_thresh,
          )
  
      return gr.Interface(
          inference,
          [
              gr.Image(type="filepath"),
              gr.Checkbox(),
              gr.Slider(0, 1.0, 0.5, step=0.01),
              gr.Slider(0, 1.0, 0.5, step=0.01),
              gr.Slider(0, 1.0, 0.5, step=0.01),
          ],
          [gr.JSON(label="results")],
          title="chinese_ocr_db_crnn_server",
          allow_flagging=False,
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import argparse
  import ast
  import copy
  import math
  import os
  import time
  import cv2
  import numpy
  import paddle
  from chinese_ocr_db_crnn_server.character import CharacterOps
  from chinese_ocr_db_crnn_server.utils import base64_to_cv2
  from chinese_ocr_db_crnn_server.utils import draw_ocr
  from chinese_ocr_db_crnn_server.utils import get_image_ext
  from chinese_ocr_db_crnn_server.utils import sorted_boxes
  from paddle.inference import Config
  from paddle.inference import create_predictor
  from PIL import Image
  import paddlehub
  from paddlehub.module.module import moduleinfo
  from paddlehub.module.module import runnable
  from paddlehub.module.module import serving
  from paddlehub.utils.log import logger
label_desc: Use image node_id 20 for calling the ChineseOCRDBCRNNServer obj's underlying member method code with example usage: obj.create_gradio_app() and returns: gr, self