掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1549|回复: 10

[教程] 采用Vim+AHK快速处理图片版词典的词条索引

[复制链接]
  • TA的每日心情
    奋斗
    2019-10-13 07:34
  • 签到天数: 209 天

    [LV.7]常住居民III

    发表于 2019-2-6 12:00:04 | 显示全部楼层 |阅读模式
    本帖最后由 VimVim 于 2019-2-6 12:38 编辑 $ Y2 O* w0 T! V3 u: C" c
    # [  y8 e9 L: f5 ?/ b8 @6 `
    ! K# N$ [$ e) R3 T8 u/ f/ d

    + `; R+ O0 e* N; h) O  w图片版词典的要点是精确校准处理的高清词典图片和精确的词条索引。图片版词典,虽然; q5 ^* G2 [1 f' s2 i
    词条内容可以不用文本化,可以直接用图片来代替,但是用于检索的词头是必须要是文本' l& N# h* T, U5 z& V
    格式的。目前 OCR 可以辅助自动化处理,但 OCR 精确度有限,还需要人工检查。文字版' a( _3 s5 D8 @5 c
    的要弄排版,图片版的要获取词头,各有各的难处。
    , ?7 k2 P- R* V! d: M0 i9 l" S6 `2 L
    这是我第一次制作图片词典《现代汉语词典》中关于词条索引制作的一点经验总结,供大
    : x2 t: w( u) @家参考:
    3 R2 W( R' n( O- Z/ k/ B' \$ W4 \4 Z+ Y/ {
    (一)在 vim 中将页码和字头整理成如下格式:
    . F' J4 e7 N+ @# o一行一个页码或词条,页码下面可以有多个词条,如
    + Q8 v) A  @8 h8 ]& O' e( e' F- a! G3 m! I1 l9 o! C
    1. 0001
        e- {% u8 p. E2 T8 G: E. q
    2. 一  
      , f( {' {" @4 L- Z0 P/ c: K) R% j
    3. 已  
      * ?& G0 X6 t* ^: E+ c' N5 ]& c$ f
    4. 0002
      0 P5 x5 [+ t  E; |: S
    5. 亿  
      + a: I$ m% Q: h+ G& |- O/ I
    复制代码

    . x8 `  w) r+ x这一步的难点是如何简洁、快速、准确地录入页码及对应的词条,便利地图片翻页处理。9 J3 M6 [" n5 O1 v& F
    我应用Vim + AHK进行快速处理:Vim按左右栏目自动调整窗口位置,并自动调整对应页码
    8 k6 {/ Y2 N/ J! w,以及录入、校对等词条整理工作;AHK的用途有两个:一是置顶并透明化Vim窗口,二是$ a# U4 s& X' R) Z$ X4 m
    快速实现图片翻页。8 _+ G4 k& w) _5 h
    1 O& [* v) K# }: n) l& c; _
    为了让大家更好地观摩,我录制了一小段处理过程的视频样式:: a  C, u( O$ H) k: {
    Video:采用Vim+AHK快速处理图片版词典的词条索引
    ' n. D$ T1 C6 w0 K! l6 O. J
    4 D7 l4 L% \8 D  p+ P1 a4 h- L$ o  m( |( y$ L$ n2 t. l
    (二)在 vim 中执行一个自定义命令将其转换为如下 mdx 源文件2 r/ R$ |1 ~& I% F+ e# u

    8 n( S9 T7 l% N+ r
    1.     一
      9 Z8 A# B! s4 i/ u
    2.     @@@LINK=XDHYCDTOC0001
      2 H( \1 Y0 U3 H2 z9 |7 Y# K
    3.     </>4 c5 ~! V9 Q  ^5 V' \
    4.     已; u  _# R% w* v3 o4 m: J
    5.     @@@LINK=XDHYCDTOC00015 ~9 f' p) P& b7 l1 R0 F1 k
    6.     </>, p- Z9 H9 J6 e9 H: }
    7.     亿
      9 d5 W, g* ~# u
    8.     @@@LINK=XDHYCDTOC0002
      0 C% I+ U4 t# w" q
    9.     </>
    复制代码

    1 _5 n& H2 N4 H8 |3 t详见上面的demo演示
    0 H. L/ \! J2 K8 c1 o' ]
    - L3 {# s9 z8 ~0 y- `* G( J/ ~* V相关帖子' Q& T# v6 {, ]% y
    6 ^7 Z3 G2 m, j3 L' r) e# E
    采用Vim快速转换图片词典的页码为mdx源文件8 e5 y! {  M" }. M
    https://www.pdawiki.com/forum/forum.php?mod=viewthread&tid=32971
    7 v# e4 y' f5 R8 n(出处: 掌上百科 - PDAWIKI)2 f6 A( a0 I+ `# {3 }

    4 E8 F8 m9 v$ W0 y# |: o  M$ e$ e8 Y1 q7 T7 E
    2 B* s; g, n! l% N0 u

    : r+ ~0 H3 _; Z! ~5 E# ?0 L7 y( E. m4 k, U: a  K$ S

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?免费注册

    x

    评分

    1

    查看全部评分

    该用户从未签到

    发表于 2019-2-6 16:36:42 | 显示全部楼层
    非常感谢你的演示和解说!" C% ]- X9 {8 D
    我不知道该如何评价,总感觉效率还不够高... . Y' U6 o- c& T9 L* i& v# h6 C( j
    在已经有第5版等的词条索引的基础上,增补去无, 本身就应该挺快了
  • TA的每日心情
    奋斗
    2019-10-13 07:34
  • 签到天数: 209 天

    [LV.7]常住居民III

     楼主| 发表于 2019-2-6 16:53:33 | 显示全部楼层
    本帖最后由 VimVim 于 2019-2-6 16:57 编辑
    9 ~" ~/ S8 t* @+ D7 z
    chigre3 发表于 2019-2-6 16:36
    # N6 m8 D! k% w0 [非常感谢你的演示和解说!& H4 P/ y: c, ^# ^" x+ G* A; s
    我不知道该如何评价,总感觉效率还不够高...
    9 }% ]% }2 N7 Q. A在已经有第5版等的词条索引的基础 ...
    6 o& n# _% V7 y& m% [/ s
    效率确实不是最高的,我的宗旨是,制作过程就是最好的学习过程。整个词典的效率瓶颈都在于词条的录入、校对,这个只能人工一条一条过才能保证质量。4 Q$ j: K, Z3 _$ [* ^9 y: A, p
    其他都是辅助手段,方法各异,我只是采用了自己熟悉的工具,做了适度的自动化封装,便于用在更多的字典制作上,但依然有很强的个性化,不具有推广性。- Y6 L, }! i: s; [' e; S! M8 A
  • TA的每日心情
    无聊
    2022-9-25 21:09
  • 签到天数: 1136 天

    [LV.10]以坛为家III

    发表于 2019-2-6 19:41:30 | 显示全部楼层
    请问有那些步骤是需要用到 AHK,vim script 办不到的?
  • TA的每日心情
    奋斗
    2019-10-13 07:34
  • 签到天数: 209 天

    [LV.7]常住居民III

     楼主| 发表于 2019-2-7 00:00:00 | 显示全部楼层
    本帖最后由 VimVim 于 2019-2-7 00:03 编辑 7 f) X; D* ]9 O1 c' F
    oversky 发表于 2019-2-6 19:41- q; c# z+ c0 W' P) `
    请问有那些步骤是需要用到 AHK,vim script 办不到的?
    0 u9 B/ ^" C1 T: L2 U
    用一个快捷键实现如下所有操作(多个指令容易出错且降低效率),其中加粗处我只知道用ahk实现,此外让Vim置顶并半透明也是用AHK:
    6 Y0 d- s' w- s) N: y8 y$ J5 o( Z
    若当前为左栏,则调用调用vimscript的命令,切换至左窗口,移动光标到下一行(也就是对应的词条都写到这个新一页之下),然后切换回右窗口,调整右窗口大小,并将当前行显示到顶部;  X! ^! D% |$ q3 N  c& i8 I
    ; j8 Z2 F, L0 k7 X7 N( i! V
    若当前为右栏,则从vim切换到xnview,按pagedown将图片翻至下一页,然后再切换回Vim,然后调用vimscript的命令,切换至左窗口,移动光标到下一行(也就是对应的词条都写到这个新一页之下),然后切换回右窗口,调整右窗口大小,并将当前行显示到顶部,最后保存所有文件。2 l) p) I: {1 q

    ) `. n, a# ~6 ~- L" l
  • TA的每日心情
    无聊
    2022-9-25 21:09
  • 签到天数: 1136 天

    [LV.10]以坛为家III

    发表于 2019-2-7 00:04:10 | 显示全部楼层
    原来是还有用到 xnview,谢谢您的指导。
  • TA的每日心情
    奋斗
    2019-10-13 07:34
  • 签到天数: 209 天

    [LV.7]常住居民III

     楼主| 发表于 2019-2-7 00:07:36 | 显示全部楼层
    oversky 发表于 2019-2-7 00:04( \' o4 g  R. I) k
    原来是还有用到 xnview,谢谢您的指导。

    ( o$ _5 H- l! F1 B) \看图软件,随便挑一个都行
  • TA的每日心情
    开心
    2018-8-8 03:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2019-2-26 14:15:25 | 显示全部楼层
    本帖最后由 喬治兄 于 2019-2-26 14:19 编辑
    " v  g6 j& V/ |, E2 Q9 _+ F0 d/ I* b$ u2 s1 ~& `
    VimVim 兄:7 x( M) e: W4 B7 D" y
    請教一個排版的問題3 g2 z0 R4 b' E( L
    小弟想把辭典的每頁首字和尾字置於同一列的左右兩端7 m; u; u$ |1 Z' V4 x$ s/ y9 N
    但因不熟 css 不知該如何達成此功能0 v; P2 o  V7 ?* A" w
    能否給小弟指導一下,謝謝您
    ( q- j- b1 m8 F+ H" Q2 d% g

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?免费注册

    x
  • TA的每日心情
    奋斗
    2019-10-13 07:34
  • 签到天数: 209 天

    [LV.7]常住居民III

     楼主| 发表于 2019-2-26 21:19:31 | 显示全部楼层
    本帖最后由 VimVim 于 2019-2-26 21:39 编辑
    % S/ L- X# b0 V9 J: j( o) y8 y8 S
    喬治兄 发表于 2019-2-26 14:15
    & a& A3 |; {" D' T  T7 tVimVim 兄:
    & _$ O$ l8 Z3 e7 y. e" u請教一個排版的問題
    ; A7 O3 P' z0 Y% X0 _1 P$ a7 e小弟想把辭典的每頁首字和尾字置於同一列的左右兩端

    0 _! W8 {4 B. o9 c+ G要的是这个效果吗?, M. ]' M! s9 j' Z9 o. ]
    下面的border纯粹是为了显示效果,你完全可以在css中将border设置删除。
    % q: ]0 @( e' U8 Q
    ' c3 k9 Y/ ^8 N, T3 o
    $ h4 L" Z  F2 MHTML文件:
    1. <!DOCTYPE html>
      2 @% }$ m. A5 o0 x% Y6 }* u
    2. <html xmlns="http://www.w3.org/1999/xhtml">1 `: a1 j! a( w& ]
    3. <head>) k: O; z) s& Y
    4.     <title></title>. I4 C1 y* f' d: b
    5. </head>* z, a, h; p4 `; q/ i- q
    6. <body>! ^4 r  m9 }8 u' y6 E9 O0 i8 i
    7.     <link rel="stylesheet" type="text/css" href="test.css" />
      1 F0 C" @/ k. M) |1 W
    8.     <div class="navtext">
      & Q  b. |, w1 v' P+ q! Y
    9.         <span class="left">accident</span>
      $ \/ i7 |" p$ g1 h, b
    10.         <span class="right">accumulate</span>) E5 X  s: i9 _) ^+ u
    11.     </div>, Y2 |7 K; C9 a( r5 m
    12.     <div class="mainbodyimg"><img src="test.png" /></div>
      $ C! Y" v% I$ I
    13. </body>
      * S. T1 d3 ^7 G2 m
    14. </html>
      ! x) x0 i3 g, a6 c4 r2 z
    复制代码
    1 w% N+ }1 k- y. N. D2 L1 n
    % a  T6 `/ k, Y4 ?; n$ e+ h

    7 g& d8 P" j+ V& ICSS文件:" G- L+ V. @) `( F' |; k
    原理:* `$ }9 P/ q* O7 Z8 U, x
    1、设置两个span,其宽度及padding合计为图片宽度,并设置每个span中的文本分别左右对齐;
    + Q. J! P0 M3 ?/ x& d( O; _" l8 Q2、将两个span都float left,这样左右两个span就会按顺序排列;: Z7 s' g2 @1 v7 n

      V  ?" T* L5 p9 z
    1. /*左对齐*/7 x7 p9 P$ J& a9 x- `4 \. a; C9 z8 C
    2. .navtext .left {
      3 [& d7 U3 {( F/ v/ M; h' j
    3.     float: left;7 s+ g$ o3 J1 z5 X3 D
    4.     text-align: left;
      5 }5 X! T, X" O! X
    5.     padding: 0 0 0 2em;
      - {; w$ L2 \0 @
    6.     width: 18em;1 [: S" ~+ j6 @! o
    7.     border: 1px dotted black;
      ' Z& C- D" J% ^/ e. r; g
    8. }
      4 L, d4 }; Q) m0 Q' a% z( F% f: E: {/ _
    9. /*右对齐*/  l( E; W& T9 Z) b
    10. .navtext .right {
      / \- U" q- D! E' `/ ~
    11.     float: left;' ]# w0 I& G% ~' s8 H+ E
    12.     text-align: right;8 s) {8 }% v$ K# w% z
    13.     padding: 0 2em 0 0;$ e# i0 D; G& A3 i4 X( P' M
    14.     width: 18em;+ i4 t" r+ g+ W( T
    15.     border: 1px dotted black;
      6 l3 x# g- h; Z. t: {9 q4 e
    16. }
      3 Z5 `% r  p5 E: Y4 j1 E
    17. /*图片*/
      " y' v0 G# s# c) _! d, F6 i: u9 U" }
    18. .mainbodyimg img {
      & v- H3 C3 p, f2 {
    19.     width: 40em;
      $ V7 B( i* z4 F: K+ g9 @- N$ X
    20.     border: 2px dotted black;+ P6 D2 u1 P( f
    21. }
      # f: L5 F* B% Y) i/ t
    复制代码
    9 U. R9 E6 k/ i5 [! t
    您可以用附件的测试文件多试试各种参数来满足个性化需求:
    ( U6 }7 Y6 U6 F% j6 g. A2 M% d+ v3 F' B

    0 \" d  H; X, h3 c- Y" ]( X# `# w; _0 o; @5 k( g: o

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?免费注册

    x
  • TA的每日心情
    开心
    2018-8-8 03:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2019-2-27 02:59:13 | 显示全部楼层
    VimVim 发表于 2019-2-26 21:19
    # L2 f& u* R, e4 l1 M( z0 m要的是这个效果吗?
    # f9 C  D( D. E3 w# B6 o下面的border纯粹是为了显示效果,你完全可以在css中将border设置删除。

    9 f7 c, u9 ]" C5 oVimVim 兄:1 S" O' b% m( O, Y% o0 _9 o
    非常感謝您的指點迷津
    % A: T$ Z$ B; z# u) m, i6 m您連文檔都附上了1 r- I: Z+ m7 O
    太感謝您了
    . g" P' Q1 G4 Y9 V- J6 W, j% `2 m真是太給力了
    6 S0 f, y1 |! m3 V% X  K& QThanks again0 D6 F. u8 _, s& c; e  c' v3 X

    " \8 N! y" u# l- }+ e  B
  • TA的每日心情
    奋斗
    2021-3-15 08:06
  • 签到天数: 585 天

    [LV.9]以坛为家II

    发表于 2019-8-12 14:25:43 | 显示全部楼层
    没太明白怎么用。
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2024-5-15 22:29 , Processed in 0.060157 second(s), 10 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

    快速回复 返回顶部 返回列表