2017-11-28 34 views
0

pdf 파일의 일반적인 속성을 일부 추출하고 싶습니다. 지금까지는 새로운 입력 파일을 시도하면서 이상한 새로운 오류가 발생했음을 제외하고는 매우 잘 작동했습니다."x9f x00ä x00? x00_ x00ë "등의 코드를 디코드하십시오. 파이썬 3의 문자열

구문 분석을 위해 pdfminer.six를 사용하고 있습니다. 이 코드 등 제목, 저자, 주제, 외모를 추출하는 것입니다 같은 : 이제

pdf_data = { 
    'Number of words': len(words), 
    'Number of paragraphs': len(paragraphs), 
    'Number of pages': len(pages) 
} 

if len(doc.info) > 0: 
    pdf_data_keys = ["latin", "windows-1252"] 
    for key in pdf_data_keys: 
     properValue = "" 
     value = doc.info[0].get(key) 
     if value is not None: 
      for enc in encodings: 
        try: 
         properValue = value.decode(encoding=enc) 
         break 
        except Exception as ex: 
         continue 
     if properValue != "": 
      pdf_data[key] = properValue 

코드를 실행 한 후, 나는 오류를 얻을하지 않습니다, 그러나 이것은 새로운 파일에 제목 표시됩니다 :

'Title': 'Ú\x9f\x00ä\x00?\x00_\x00ë\x00È\x00/\x00Å\x00Á\x00\x80\x00(\x00ë\x00ä\x00ñ\x00\x80\x00ï\x00?\x00Ê\x00%\x00À\x00\x80\x00è\x00ê\x00+\x00\x80\x00í\x00ä\x00ñ\x00è\x00ë\x00\x80\x00á\x00è\x00ã\x00\x80\[email protected]\x00\x80\x00á\x00è\x00ã\x00\x91\x00\x91\x00\x90\x00\x80\[email protected]\x00\x80\x00<\x00í\x00\x90\x00\x93\x00\x99\x00\x16\x00\x94\x00\x99\x00\x94\x00\x95\x00\x96\x00\x16\x00\x80\[email protected]\x00\x80\x00ü\x00Â\x00Á\x00Ê\x00Ë\x00Ñ\x00Ä\x00Ç\x00È\x00\x80\[email protected]\x00\x80\x00Â\x00?\x00Á\x00Ê\x00Ë\x00Á\x00\x05\x00Ë\x00È\x00Í\x00È\x00È\x00Å\x00/\x00Ê\x00È\x00\x06\x00À\x00Á'} 

나는이에 거기 짧은 목록을 변환, 존재 인코딩의 모든 다른 유형의 퍼팅 시도했다 :

encodings = ['ascii', 'big5', 'big5hkscs', 'cp037', 'cp273', 'cp424', 'cp437', 'cp500', 'cp720', 'cp737', 
       'cp775', 'cp850', 'cp852', 'cp855', 'cp856', 'cp857', 'cp858', 'cp860', 'cp861', 'cp862', 'cp863', 
       'cp864', 'cp865', 'cp866', 'cp869', 'cp874', 'cp875', 'cp932', 'cp949', 'cp950', 'cp1006', 
       'cp1026', 'cp1125', 'cp1140', 'cp1250', 'cp1251', 'cp1252', 'cp1253', 'cp1254', 'cp1255', 
       'cp1256', 'cp1257', 'cp1258', 'cp65001', 'euc_jp', 'euc_jis_2004', 'euc_jisx0213', 'euc_kr', 
       'gb2312', 'gbk', 'gb18030', 'hz', 'iso2022_jp', 'iso2022_jp_1', 'iso2022_jp_2', 'iso2022_jp_2004', 
       'iso2022_jp_3', 'iso2022_jp_ext', 'iso2022_kr', 'latin_1', 'iso8859_2', 'iso8859_3', 'iso8859_4', 
       'iso8859_5', 'iso8859_6', 'iso8859_7', 'iso8859_8', 'iso8859_9', 'iso8859_10', 'iso8859_11', 
       'iso8859_13', 'iso8859_14', 'iso8859_15', 'iso8859_16', 'johab', 'koi8_r', 'koi8_t', 'koi8_u', 
       'kz1048', 'mac_cyrillic', 'mac_greek', 'mac_iceland', 'mac_latin2', 'mac_roman', 'mac_turkish', 
       'ptcp154', 'shift_jis', 'shift_jis_2004', 'shift_jisx0213', 'utf_32', 'utf_32_be', 'utf_32_le', 
       'utf_16', 'utf_16_be', 'utf_16_le', 'utf_7', 'utf_8', 'utf_8_sig', "idna", "mbcs", "oem", "palmos", 
       "punycode", "raw_unicode_escape", "rot_13", "undefined", "unicode_escape", "unicode_internal", 
       "base64_codec", "bz2_codec", "hex_codec", "quopri_codec", "string_escape", "uu_codec", 
       "zlib_codec"] 

아직이 도움이되지 않습니다.

필자는 파이썬에 관해서라면 절대 초보자입니다.

멋진 하루 보내십시오!

답변

0

문자열은 UTF-16BE로 인코딩됩니다. 따라서 BOM을 확인할 수 있습니다. \ xFE \ xFF

텍스트 문자열 유형은 PDF 32000-1 : 2008 - 7.9.2.2에 지정되어 있습니다. PDFDocEncoding (ISO Latin 1에 simliar) 또는 UTF-16BE로 인코딩 할 수 있습니다. PDF 2.0에서는 UTF-8로 인코딩 된 문자열이 될 수도 있습니다.

+0

안녕하세요. 1 월, 답변 해 주셔서 감사합니다. 거기에서 볼 수 있듯이 모든 유형의 UTF 인코딩을 루프에 포함 시켰습니다. 슬프게도, 그 문제를 해결하지 않았다 : / – Lena