from odps.udf import annotate @annotate('string,binary->string') class ExtractPDFText(object): def __init__(self): import sys sys.path.insert(0, "work/pdf_tools_cp37.tar.gz/packages") def evaluate(self, key, file_content): import fitz import json from tqdm import tqdm try: ret = {} content = {} ret["text"] = content with fitz.open(stream=file_content, filetype="pdf") as doc: ret['metadata'] = doc.metadata for page in tqdm(doc): # extract info content[page.number] = page.get_text().strip() ret = json.dumps(ret, ensure_ascii=False) return ret except Exception as e: return f"error:{str(e)}"