PDF转Word后常见格式错乱手动处理方法(借助查找-替换-通配符)
发布网友
发布时间:2024-09-24 18:35
我来回答
共1个回答
热心网友
时间:2024-10-05 12:38
由于工作需要,时常会碰上各种PDF转换后的Word文档,存在大量格式错乱,
关于分节符的处理,我之前写过一篇文章,请参考:
这篇主要讲段落格式的处理,
需要借助Word里面Ctrl+G【替换】功能,
而在此之前,还是先看看这一功能高阶使用的知识点,也即替换代码、通配符的使用,
由于主要是使用【替换】功能,【查找】涉及的代码和通配符略有不同,但此处不再赘述,
具体请参考:
Word查找和替换通配符(完全版)_word查找通配符-CSDN博客
非常常用的有这么几个:
软回车替换为硬回车——替换^l为^p
批量删除分节符——替换^b为空
批量删除换行符——替换^p为空
常规的文件使用这三个就基本已经足够了,
偶尔也会需要替换分栏符^n的。
拿到一个格式错乱的Word文档,
按照通常的处理顺序,先处理掉分节符、页面格式、字体格式之后,
接下来就要处理最复杂的段落格式了。
大部分转换后的Word文件都是这样的:
关于前者,可以借助【替换连续两个换行符为空】的方法作简单处理:
一、连续空行——替换^p^p为空
可以看到,连续的空行基本都消失了,
只不过这样子处理还是相对比较粗糙,
一是,连续换行中间可能会夹杂页码,这样子处理会把页码处理到正文段落中间,
二来,有时候可能会把一些带有前后空行的章节标题给弄进正文段落里面。
前者,页码可以通过使用表达式匹配数字字符的方式去除,
相当于查找【换行符+数字+换行符】后替换为空,
但由于页码前后空行数不定,页码也可能不仅1位数字,因此表达式写起来比较复杂,
按道理讲,对于单位数字,应该可以利用以下表达式完成替换,但不知道为何无法成功,
于是我就暂且放弃了,对于这种大段的连续空行,我都是直接手动删,
反正无论如何,自己还是都得过一遍全文。。
对于后者,
二、段落内空行——使用表达式查找替换
由于PDF识别Word的时候,不少工具都会把PDF页面中每行末尾都加一个换行符,导致一个完整段落被切分成若干行,
对这种格式,先观察一下如何描述:
可以看到,换行符前后文的基本特征是,【汉字-换行符-汉字】,
且显然我们不希望它与正常段落换行的【符号-换行符-汉字】、【符号-换行符-数字】与【汉字-换行符-符号】相混淆,如下图白圈所示:
只不过,难以避免的,是段落标题与正文段落之间的换行符,即上图紫色圆圈,
这些同样也是【汉字-换行符-汉字】的模式。
因此,在查找上,
我们可以——
(一)单纯地使用【汉字-换行符-汉字】去替换
表达式如下:(需要勾选“使用通配符”)
查找内容:([一-﨩])(^p)([一-﨩]) 替换为:\1\3
解释:
不过,考虑到有时候一些文档内可能存在其它字符无法被【汉字】规则查找到,
例如书名号,
此时,使用【汉字-换行符-汉字】去替换,就会存在问题:
因此,只能——
(二)通过一定的排除法完成大部分替换任务
方法是,识别【汉字-换行符】,再排除那些【换行符-数字/英文符号】(例如段落编号、参考文献、代码等),完成大部分需要消除的换行符,
也就是【汉字-换行符-非数字/符号】,
替换完成后,再手动将段落标题后进行空行。
表达式如下:(需要勾选“使用通配符”)
查找内容:([一-﨩])(^p)([!^1-^127]) 替换为:\1\3
解释:
(下图:我盲猜的[^1-^127]的指代范围:)
点击“全部替换”,可以看到,替换成功后,段落内的空行都成功地消除,
书名号也能很好地兼容:
同样地,就是我们上文提到的,段落标题与段落正文之间的空行被去掉了。
此外,使用这种规则排除也会导致另外的问题,
如,一些非英文字符的小语种符号、编号等:
这些位置的换行符也会被去除,从而导致公式区出现问题。
当然,也可以理解,毕竟文章篇幅越大,涉及到的格式和文本种类就越多、越复杂,
很难存在能够借助简单工具、精准普适全文所有需求的方法,依然需要人工检查。
所以,请认识到所有工具和方法都存在局限性,
本文提出的方法不过是在力所能及范围内提升一定的工作效率,主要还是在熟练情况下减轻一部分(或大量)重复劳动的工作量。
参考资料
除了前文提到的CSDN的一篇帖子之外,
还感谢知友@郭嘉 ,我文中的表达式也主要是从这位知友在另一篇回答评论区留言中学习的。
热心网友
时间:2024-10-05 12:33
由于工作需要,时常会碰上各种PDF转换后的Word文档,存在大量格式错乱,
关于分节符的处理,我之前写过一篇文章,请参考:
这篇主要讲段落格式的处理,
需要借助Word里面Ctrl+G【替换】功能,
而在此之前,还是先看看这一功能高阶使用的知识点,也即替换代码、通配符的使用,
由于主要是使用【替换】功能,【查找】涉及的代码和通配符略有不同,但此处不再赘述,
具体请参考:
Word查找和替换通配符(完全版)_word查找通配符-CSDN博客
非常常用的有这么几个:
软回车替换为硬回车——替换^l为^p
批量删除分节符——替换^b为空
批量删除换行符——替换^p为空
常规的文件使用这三个就基本已经足够了,
偶尔也会需要替换分栏符^n的。
拿到一个格式错乱的Word文档,
按照通常的处理顺序,先处理掉分节符、页面格式、字体格式之后,
接下来就要处理最复杂的段落格式了。
大部分转换后的Word文件都是这样的:
关于前者,可以借助【替换连续两个换行符为空】的方法作简单处理:
一、连续空行——替换^p^p为空
可以看到,连续的空行基本都消失了,
只不过这样子处理还是相对比较粗糙,
一是,连续换行中间可能会夹杂页码,这样子处理会把页码处理到正文段落中间,
二来,有时候可能会把一些带有前后空行的章节标题给弄进正文段落里面。
前者,页码可以通过使用表达式匹配数字字符的方式去除,
相当于查找【换行符+数字+换行符】后替换为空,
但由于页码前后空行数不定,页码也可能不仅1位数字,因此表达式写起来比较复杂,
按道理讲,对于单位数字,应该可以利用以下表达式完成替换,但不知道为何无法成功,
于是我就暂且放弃了,对于这种大段的连续空行,我都是直接手动删,
反正无论如何,自己还是都得过一遍全文。。
对于后者,
二、段落内空行——使用表达式查找替换
由于PDF识别Word的时候,不少工具都会把PDF页面中每行末尾都加一个换行符,导致一个完整段落被切分成若干行,
对这种格式,先观察一下如何描述:
可以看到,换行符前后文的基本特征是,【汉字-换行符-汉字】,
且显然我们不希望它与正常段落换行的【符号-换行符-汉字】、【符号-换行符-数字】与【汉字-换行符-符号】相混淆,如下图白圈所示:
只不过,难以避免的,是段落标题与正文段落之间的换行符,即上图紫色圆圈,
这些同样也是【汉字-换行符-汉字】的模式。
因此,在查找上,
我们可以——
(一)单纯地使用【汉字-换行符-汉字】去替换
表达式如下:(需要勾选“使用通配符”)
查找内容:([一-﨩])(^p)([一-﨩]) 替换为:\1\3
解释:
不过,考虑到有时候一些文档内可能存在其它字符无法被【汉字】规则查找到,
例如书名号,
此时,使用【汉字-换行符-汉字】去替换,就会存在问题:
因此,只能——
(二)通过一定的排除法完成大部分替换任务
方法是,识别【汉字-换行符】,再排除那些【换行符-数字/英文符号】(例如段落编号、参考文献、代码等),完成大部分需要消除的换行符,
也就是【汉字-换行符-非数字/符号】,
替换完成后,再手动将段落标题后进行空行。
表达式如下:(需要勾选“使用通配符”)
查找内容:([一-﨩])(^p)([!^1-^127]) 替换为:\1\3
解释:
(下图:我盲猜的[^1-^127]的指代范围:)
点击“全部替换”,可以看到,替换成功后,段落内的空行都成功地消除,
书名号也能很好地兼容:
同样地,就是我们上文提到的,段落标题与段落正文之间的空行被去掉了。
此外,使用这种规则排除也会导致另外的问题,
如,一些非英文字符的小语种符号、编号等:
这些位置的换行符也会被去除,从而导致公式区出现问题。
当然,也可以理解,毕竟文章篇幅越大,涉及到的格式和文本种类就越多、越复杂,
很难存在能够借助简单工具、精准普适全文所有需求的方法,依然需要人工检查。
所以,请认识到所有工具和方法都存在局限性,
本文提出的方法不过是在力所能及范围内提升一定的工作效率,主要还是在熟练情况下减轻一部分(或大量)重复劳动的工作量。
参考资料
除了前文提到的CSDN的一篇帖子之外,
还感谢知友@郭嘉 ,我文中的表达式也主要是从这位知友在另一篇回答评论区留言中学习的。