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)}"
