tag*_*aga 7 python pdf encoding pdfminer
我用 Python 编写了一个从 PDF 文件中提取文本的代码。但对于某些文件,我得到一些奇怪的输出。这是我的代码:
\nimport requests\n\nfrom io import BytesIO\nfrom pdfminer.high_level import extract_text, extract_pages\n\npdf_link = 'https://www.neerach.ch/public/upload/assets/1417/MTB0321.pdf'\n\nresponse = requests.get(pdf_link)\nwith BytesIO(response.content) as data:\n \n num_of_pages = len(list(extract_pages(data)))\n print('number of pages', num_of_pages)\n\n #extract first 5 pages\n text = extract_text(data, password='', page_numbers = None, maxpages = 5, caching=True, codec='utf-8', laparams=None)\n text = str(text)\n text = text.replace('\\n\\n\\n', '\\n\\n').strip()\n print(text)\n
Run Code Online (Sandbox Code Playgroud)\n我得到的结果:
\ncid:3)\n(cid:3)\n(cid:3)\n(cid:3)\n\n(cid:3)\n(cid:3)\n(cid:3)\n\nNr. 3 | 2021\n\nM\xc3\xa4rz 2021\n\n(cid:3)\n(cid:57)(cid:72)(cid:85)(cid:75)(cid:68)(cid:81)(cid:71)(cid:79)(cid:88)(cid:81)(cid:74)(cid:72)(cid:81)(cid:3)(cid:71)(cid:72)(cid:86)(cid:3)(cid:42)(cid:72)(cid:80)(cid:72)(cid:76)(cid:81)(cid:71)(cid:72)(cid:85)(cid:68)(cid:87)(cid:72)(cid:86)(cid:3)\n(cid:3)\n(cid:54)(cid:70)(cid:75)(cid:88)(cid:79)(cid:72)(cid:81)(cid:3)\n(cid:3)\n(cid:54)(cid:82)(cid:93)(cid:76)(cid:68)(cid:79)(cid:72)(cid:3)(cid:39)(cid:76)(cid:72)(cid:81)(cid:86)(cid:87)(cid:72)(cid:3)\n(cid:3)\n(cid:48)(cid:76)(cid:87)(cid:87)(cid:72)(cid:76)(cid:79)(cid:88)(cid:81)(cid:74)(cid:72)(cid:81)(cid:3)(cid:39)(cid:82)(cid:85)(cid:73)(cid:89)(cid:72)(cid:85)(cid:72)(cid:76)(cid:81)(cid:72)(cid:3)\n(cid:3)\n(cid:48)(cid:76)(cid:87)(cid:87)(cid:72)(cid:76)(cid:79)(cid:88)(cid:81)(cid:74)(cid:72)(cid:81)(cid:3)(cid:68)(cid:88)(cid:86)(cid:90)(cid:108)(cid:85)(cid:87)(cid:76)(cid:74)(cid:72)(cid:85)(cid:3)(cid:57)(cid:72)(cid:85)(cid:72)(cid:76)(cid:81)(cid:72)(cid:3)\n(cid:3)\n(cid:48)(cid:76)(cid:87)(cid:87)(cid:72)(cid:76)(cid:79)(cid:88)(cid:81)(cid:74)(cid:72)(cid:81)(cid:3)(cid:46)(cid:76)(cid:85)(cid:70)(cid:75)(cid:74)(cid:72)(cid:80)(cid:72)(cid:76)(cid:81)(cid:71)(cid:72)(cid:81)(cid:3)\n\n(cid:20)(cid:3)\n\n(cid:23)(cid:3)\n\n(cid:20)(cid:21)(cid:3)\n\n(cid:21)(cid:20)(cid:3)\n\n(cid:21)(cid:24)(cid:3)\n\nMitteilungsblatt Neerach | Gemeindeverwaltung Neerach | Binzm\xc3\xbchlestrasse 14 | 8173 Neerach\n044 859 16 16 | einwohnerkontrolle@neerach.ch | www.neerach.ch\n\n(cid:3)(cid:3)(cid:3)(cid:3)(cid:3)(cid:3)(cid:3)(cid:3)\n(cid:3)\n(cid:3)\n(cid:3)\n
Run Code Online (Sandbox Code Playgroud)\n基本上每个字符都替换为(cid:<number>)
. 而且,正如您所看到的,我有一些字符串值。\n我还尝试了不同类型的编码,例如:
encodings = ["Adobe-GB1-0", "Adobe-GB1-1", "Adobe-GB1-2", "Adobe-GB1-3", "Adobe-GB1-4", "Adobe-GB1-5", "GB-EUC-H", "GB-EUC-V", "GB-H", "GB-V", "GBK-EUC-H", "GBK-EUC-V", "GBK2K-H", "GBK2K-V", 'utf-8',\n "GBKp-EUC-H", "GBKp-EUC-V", "GBT-EUC-H", "GBT-EUC-V", "GBT-H", "GBT-V", "GBTpc-EUC-H", "GBTpc-EUC-V", "GBpc-EUC-H", "GBpc-EUC-V", "UniGB-UCS2-H", "UniGB-UCS2-V", "UniGB-UTF16-H", 'utf-16',\n "UniGB-UTF16-V", "UniGB-UTF32-H", "UniGB-UTF32-V", "UniGB-UTF8-H", "UniGB-UTF8-V", "78-EUC-V", "78-H", "78-RKSJ-H", "78-RKSJ-V", "78-V", "78ms-RKSJ-H", "78ms-RKSJ-V", "83pv-RKSJ-H", 'utf-32',\n "90ms-RKSJ-H", "90ms-RKSJ-V", "90msp-RKSJ-H", "90msp-RKSJ-V", "90pv-RKSJ-H", "90pv-RKSJ-V", "Add-H", "Add-RKSJ-H", "Add-RKSJ-V", "Add-V", "Adobe-Japan1-0", "Adobe-Japan1-1", "Adobe-Japan1-2",\n "Adobe-Japan1-3", "Adobe-Japan1-4", "Adobe-Japan1-5", "Adobe-Japan1-6", "Adobe-Japan1-7", "EUC-H", "EUC-V", "Ext-H", "Ext-RKSJ-H", "Ext-RKSJ-V", "Ext-V", "H", "Hankaku", "Hiragana", "HKm471-B5-H",\n "Adobe-KR-9", "UniAKR-UTF16-H", "UniAKR-UTF32-H", "UniAKR-UTF8-H", "ETenms-B5-V", "HKdla-B5-H", "HKdla-B5-V", "HKdlb-B5-H", "HKdlb-B5-V", "HKgccs-B5-H", "HKgccs-B5-V", "HKm314-B5-H", "HKm314-B5-V"]\n
Run Code Online (Sandbox Code Playgroud)\n如何对这种类型的响应进行编码?\n我应该在代码中添加/更改什么才能获得文本响应?
\nJos*_*efZ 13
有更多警告(其中一些在《生活很复杂》中讲述)》的评论中提到)并使用您的示例数据:
\nimport re\ndef cidToChar(cidx):\n return chr(int(re.findall(r\'\\(cid\\:(\\d+)\\)\',cidx)[0]) + 29)\n\nxx = \'\'\'\n(cid:3)\n(cid:3)\n(cid:3)\n(cid:3)\n\n(cid:3)\n(cid:3)\n(cid:3)\n\nNr. 3 | 2021\n\nM\xc3\xa4rz 2021\n\n(cid:3)\n(cid:57)(cid:72)(cid:85)(cid:75)(cid:68)(cid:81)(cid:71)(cid:79)(cid:88)(cid:81)(cid:74)(cid:72)(cid:81)(cid:3)(cid:71)(cid:72)(cid:86)(cid:3)(cid:42)(cid:72)(cid:80)(cid:72)(cid:76)(cid:81)(cid:71)(cid:72)(cid:85)(cid:68)(cid:87)(cid:72)(cid:86)(cid:3)\n(cid:3)\n(cid:54)(cid:70)(cid:75)(cid:88)(cid:79)(cid:72)(cid:81)(cid:3)\n(cid:3)\n(cid:54)(cid:82)(cid:93)(cid:76)(cid:68)(cid:79)(cid:72)(cid:3)(cid:39)(cid:76)(cid:72)(cid:81)(cid:86)(cid:87)(cid:72)(cid:3)\n(cid:3)\n(cid:48)(cid:76)(cid:87)(cid:87)(cid:72)(cid:76)(cid:79)(cid:88)(cid:81)(cid:74)(cid:72)(cid:81)(cid:3)(cid:39)(cid:82)(cid:85)(cid:73)(cid:89)(cid:72)(cid:85)(cid:72)(cid:76)(cid:81)(cid:72)(cid:3)\n(cid:3)\n(cid:48)(cid:76)(cid:87)(cid:87)(cid:72)(cid:76)(cid:79)(cid:88)(cid:81)(cid:74)(cid:72)(cid:81)(cid:3)(cid:68)(cid:88)(cid:86)(cid:90)(cid:108)(cid:85)(cid:87)(cid:76)(cid:74)(cid:72)(cid:85)(cid:3)(cid:57)(cid:72)(cid:85)(cid:72)(cid:76)(cid:81)(cid:72)(cid:3)\n(cid:3)\n(cid:48)(cid:76)(cid:87)(cid:87)(cid:72)(cid:76)(cid:79)(cid:88)(cid:81)(cid:74)(cid:72)(cid:81)(cid:3)(cid:46)(cid:76)(cid:85)(cid:70)(cid:75)(cid:74)(cid:72)(cid:80)(cid:72)(cid:76)(cid:81)(cid:71)(cid:72)(cid:81)(cid:3)\n\n(cid:20)(cid:3)\n\n(cid:23)(cid:3)\n\n(cid:20)(cid:21)(cid:3)\n\n(cid:21)(cid:20)(cid:3)\n\n(cid:21)(cid:24)(cid:3)\n\nMitteilungsblatt Neerach | Gemeindeverwaltung Neerach | Binzm\xc3\xbchlestrasse 14 | 8173 Neerach\n044 859 16 16 | einwohnerkontrolle@neerach.ch | www.neerach.ch\n\n(cid:3)(cid:3)(cid:3)(cid:3)(cid:3)(cid:3)(cid:3)(cid:3)\n(cid:3)\n(cid:3)\n(cid:3)\n\'\'\'\nfor x in xx.split(\'\\n\'):\n if x != \'\' and x != \'(cid:3)\': # merely to compact the output\n abc = re.findall(r\'\\(cid\\:\\d+\\)\',x)\n if len(abc) > 0:\n for cid in abc: x=x.replace(cid, cidToChar(cid))\n print(repr(x).strip("\'"))\n
Run Code Online (Sandbox Code Playgroud)\n输出显示cidToChar
算法失败,例如对于带有元音变音/分音符号的德语字母(例如ausw\\x89rtiger而不是ausw \xc3\xa4 rtiger):.\\SO\\66656067.py
Nr. 3 | 2021\nM\xc3\xa4rz 2021\nVerhandlungen des Gemeinderates\nSchulen\nSoziale Dienste\nMitteilungen Dorfvereine\nMitteilungen ausw\\x89rtiger Vereine\nMitteilungen Kirchgemeinden\n1\n4\n12\n21\n25\nMitteilungsblatt Neerach | Gemeindeverwaltung Neerach | Binzm\xc3\xbchlestrasse 14 | 8173 Neerach\n044 859 16 16 | einwohnerkontrolle@neerach.ch | www.neerach.ch\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
6261 次 |
最近记录: |