Args:
            blobs: a list of blobs to parse
            gcs_output_path: a path on GCS to store parsing results
            timeout_sec: a timeout to wait for DocAI to complete, in seconds
            check_in_interval_sec: an interval to wait until next check
                whether parsing operations have been completed, in seconds
        This is a long-running operations! A recommended way is to decouple
            parsing from creating Langchain Documents:
            >>> operations = parser.docai_parse(blobs, gcs_path)
            >>> parser.is_running(operations)
            You can get operations names and save them:
            >>> names = [op.operation.name for op in operations]
            And when all operations are finished, you can use their results:
            >>> operations = parser.operations_from_names(operation_names)
            >>> results = parser.get_results(operations)
            >>> docs = parser.parse_from_results(results)
        """
        output_path = gcs_output_path if gcs_output_path else self._gcs_output_path
        if output_path is None:
            raise ValueError("An output path on GCS should be provided!")
        operations = self.docai_parse(blobs, gcs_output_path=output_path)
        operation_names = [op.operation.name for op in operations]
        logger.debug(
            f"Started parsing with DocAI, submitted operations {operation_names}"
        )
        is_running, time_elapsed = True, 0
        while is_running:
            is_running = self.is_running(operations)
            if not is_running:
                break
            time.sleep(check_in_interval_sec)
            time_elapsed += check_in_interval_sec
            if time_elapsed > timeout_sec:
                raise ValueError(
                    "Timeout exceeded! Check operations " f"{operation_names} later!"
                )
            logger.debug(".")