掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 26022|回复: 44

[索引] 词库制作中可能有用的软件、技术整理[201710919]

  [复制链接]

该用户从未签到

发表于 2013-8-25 10:34:14 | 显示全部楼层 |阅读模式
本帖最后由 Oeasy 于 2017-9-19 15:42 编辑
, ^4 @# X& F- ~% y! u9 H. H& p; \: @3 c6 a- u* `1 j

7 c/ g' n% ]2 v# Y# D4 y# L6 @FAQ" h( L9 D2 g" o# I
>>  未加密的 mdx 如何转为txt?$ a/ a' e" f" m# I, F$ x( A
工具①,GetDict.exe by yhssdl。下载地址:1 q# y7 H; X! B( ~$ _
http://pan.baidu.com/share/link? ... 67&uk=305151372
4 x4 t% n  a, E8 n+ z. A6 G. f% p; j8 B  g9 A$ q8 D
>>1 Q" ~5 h9 c$ R, ]0 |4 G# ]1 \( A
[实例][解压mdx/mdd再打包为mdx/mdd][乱][多图]  https://www.pdawiki.com/forum/fo ... hread&tid=13388
8 L" G- v0 r* |
0 s; m5 d( X$ v* \5 R6 K* }/ ~- U) w% N6 y# }
老马的原创空间 http://www.cnblogs.com/stronghorse/
* r/ ?6 {3 R* L% V
; x1 u+ @2 F1 E) [2 z. h1 h
* D8 ?' P& A$ q* ]# p; Zbgl-> txt https://www.pdawiki.com/forum/fo ... &fromuid=147948
3 K' `0 o+ j6 I: U
, t, V- o' ^. n4 J9 O: Z) b$ |  b0 I
1 P$ L+ ~: o9 v
5 q) D( J3 {6 d! S* t
1 a  U6 H- ~  E2 F7 s! I1 q
/ O* Y/ \' M( j3 n1 U; C
整理中,欢迎补充
8 U. f% a7 l* `3 {5 lmdx制作非常简单,但是要获取源文件,或把词典做得很漂亮有的时候是需要下一番功夫的。
+ O& j' X- Q* q, \7 o正则表达式Regular Expression, html, xml, div+css,
( P5 j7 D$ d# F. F1 T6 S. `$ g编码,尤其是汉字编码的一些知识,神马UTF, GBK, unicode。。。{:10_300:}
) M$ h) v/ R2 S程序设计语言:
+ W& p4 l" a5 FPython;C++;
/ _  W$ L4 K% d1 W9 `! ]/ k4 qPerl; @" I0 ]9 k# a! ~) x1 v' t
JavaScript : http://www.w3school.com.cn/js/jsref_decodeURIComponent.asp) U/ t/ C: T  c6 ~
VBS/VBA  P# v9 P% e0 Z/ G" x
http://www31.ocn.ne.jp/~h_ishida/scripts.html% F2 {$ i! y8 `; a5 `7 V
数据库软件:* W, S5 ]5 R6 E" o
Navicat Premium
6 P; x8 g( s" y( ?* i0 uSQLiteSpy,PowerBuilder% p2 \. [( n; ]5 ]9 o
SQLite Expert Professional
7 ]& r6 j% {9 Z( s. b软件:
: g2 J1 h. h' X& ]4 y) PMDict,MdxBuilder: http://www.octopus-studio.com/download.cn.htm( u1 _5 b; y" Q5 J: Z$ f4 {& c' K

( N6 u6 ]; }4 `文本编辑器类:Notepad, Notepad++, EmEditor, UltraEdit, EditPlus,
/ z3 U" o# x& u% p+ f% bReplace Pioneer http://zhidao.baidu.com/link?url ... KEcUNfmzOo7nLH8BSNq# M$ `, f% L) d
Raptor 3 http://softfie.com/software/hacktool-raptor.html
( J/ c9 N" `0 y7 a  {. Tawk 4 Windows :http://sourceforge.net/projects/ ... -1-bin.zip/download
* E& R0 ^( r0 m' ?
! [; c' }. G$ f$ fMicroft Office:Word, Excel, Access
- U9 J& ]. b7 l5 G" r5 NAdobe: Adobe Director (某些光盘是用Macromedia软件做的,用这个可以提取语音),Adobe Acrobat Pro
! W4 s' D+ j6 s5 J; e- Y. SOCR:ABBYY FineReader( k" x+ T4 u  c& _; A' v
DWS: Tlex* c' s( I9 J: Q) b
浏览器:Firefox, Chrome
" N3 Q/ I: U% [/ u& T- l& S2 X7 l" r, @+ G/ H
解压缩软件
* R5 Y: j/ T; {; M1 u: U   S; u+ ]  a: e$ a0 o0 r! q6 ?
1 t! r6 Z5 o) l# J; p
离线下载类:
% @! U4 I: Z: d! ?$ I) z# _* K2 Xwget, Teleport Pro, OfflineExplorer6 |  {4 k8 ]6 E1 b3 ?- ?; }
其他
  J, A# x' D1 K, u) W  ?Fiddler 2,
8 o+ M1 n* H% e! j7 i! `SQLiteSpy
: t' K4 [1 h. b, D- A/ ?yhssdl的GetDict2.68 D! g2 j- F* i0 G4 o) u" @! k8 v- `1 _( c
AudioTranscoder. f0 w: R/ h* Y1 y# m: B% k
按键精灵0 s8 I3 w, l: @$ D' w! Y
Tvangeste / dictzip-win32
6 w8 v- g9 C- K" ~; d$ ahttps://github.com/Tvangeste/dictzip-win32/releases/
+ p7 }- ^4 E% N) [# {  ~& T" m7 d' l! R; Q9 V: N0 v
dsl相关软件:
. L/ k4 S3 D6 Z8 K+ q/ bDSLGD
; H2 \- \& @/ m% i$ r5 D8 k2 ?
: l$ X+ f: U6 e# u# u( {有参考价值的技术(讨论)贴:' ~4 U0 Q" `4 ^9 t% w% c1 x
0. superfan89; h: J' ^, G; [( K
[英汉-汉英] 21世纪大英汉词典&新汉英大词典【11/8/1更新】: https://www.pdawiki.com/forum/thread-7022-1-1.html, 帖子附件有ydDumper源代码  W# ]7 H4 d( k# ^- X
https://github.com/superfan89/IDMSKconv IDMSKconv源码
0 z1 K8 w$ V3 s9 i, i( x+ b3 Ihttp://dicwizard.jp/jamming_ug.html
) Y' _% L& g* U) Ihttps://www.pdawiki.com/forum/fo ... ctionary&page=3 63楼
2 h) j' z* @/ H# K0 U6 D
) y( a* r* ]. t$ g! n1 L/ W& ~1. chigre
: b7 M$ [$ d6 D% F【直播完成】一个在线词典的离线MDX化制作[2012-11-29]:https://www.pdawiki.com/forum/thread-10260-1-1.html
$ V; w) t5 P  i  Y: R7 X4 i各种格式词典数据转TXT文本的工具软件(.BGL .LSD .LD2 .MDX STARDICT) https://www.pdawiki.com/forum/thread-10267-1-1.html# F" g/ Q* ~) {! O
[其他语种] Z意汉汉意词典转制效果: https://www.pdawiki.com/forum/thread-10796-1-1.html
! I* S( u& [+ W# B+ B: u8 F" I/ G+ t( V$ @  s2 }, i
2. Hugh
4 v1 j2 _! M0 v  T  p/ z【图文】手把手教你[转换]+[排版] MDX格式词库: https://www.pdawiki.com/forum/thread-10689-1-1.html
. X5 ^( R' O; z9 t3 X! g
) G4 c, w2 S( o4 m7 h: N% U7 ^3. ldlcau( x. h+ [! e0 {2 T" n3 H
mdict版制作方法和常用工具: https://www.pdawiki.com/forum/thread-899-1-1.html
* J  G; ^* x) Q8 |; O
) G; b' \( o$ O) Y, B, N4. Oeasy! l  e. [, P6 m# l
【2013.07.06】如何利用Microsoft Word排版制作.mdx? : https://www.pdawiki.com/forum/thread-10801-1-1.html# I' W4 H/ H: O1 o# ]
1 [* b4 v5 }7 H5 u) q  j2 }! R
5. jjcizi6 N0 C) u' C7 l- d% |% n
[BlueDict] 一种把Excel转换为MDX的方法: https://www.pdawiki.com/forum/thread-9600-1-1.html7 [1 G% E2 Y# z: L6 |% e# n
0 C" b6 p2 C2 }  F% o$ q( e* H
6. sunsmile23
7 F3 I# j6 Y+ B* {汉英词典的汉字显示问题: https://www.pdawiki.com/forum/thread-10809-1-1.html
$ E2 b8 W' N& v9 j6 o+ A/ Lvba如何正确地输出UTF-8编码文件: https://www.pdawiki.com/forum/thread-10832-1-1.html
& D& }: h0 `- T  r; ]. i/ g8 }1 ^$ b
  ^. ^# U8 l# L& N9 b! s  s( ]7. sjn01
1 s6 [; |3 K* e, d& Z1 a. P& T求助,能否将Collins COBUILD 高阶英汉词典做成MDX?:https://www.pdawiki.com/forum/thread-6626-1-1.html) h5 p+ N3 [& B( w/ Q) o

! a+ Z5 [; w1 d( x6 c5 S8. 惟吾无为
, s# y# R8 m: ]; g- Blinux下制作离线百度百科的思路(含成品): https://www.pdawiki.com/forum/thread-9256-1-1.html! c1 R8 a! L5 n/ I/ T  R# G
3 t( D* W( O' e
9. freegut
  o2 |- J2 q- C: K5 B- b  w+ @分享Lingvo到MDict的转换经验: https://www.pdawiki.com/forum/thread-5386-1-1.html
& e' D4 v# K+ u
3 j4 d! e: O( N' U8. zhu1234
/ A. u9 e- g( N2 u5 hMdx制作流程: https://www.pdawiki.com/forum/thread-9440-1-1.html
) K4 b6 k; R. g. i& i: D% L
3 |& P8 U* s2 m$ }9. 发哥; f+ e* c5 ]/ R% B$ u
[英-英] ◆Dictionary of American Slang and Colloquial Expressions【20081222】:https://www.pdawiki.com/forum/fo ... ighlight=pdf%2Bword 8楼有pdf到html的经验。0 ^* P7 f. O/ W# c/ w0 K
) L& W0 E" U5 q9 @. _
10. FHYVUCBRUG , b! V5 I. m1 U- Z" x% i
https://www.pdawiki.com/forum/thread-10617-9-1.html 第219、220、222、224楼。网盘有ConvToSpx.py- D2 K  y! \0 v  s1 [+ {
: z) I0 \- ?% ^  }/ ~" e, W# }, z
11. 手把手教你转换辞典
: c* F9 l' o( \# z6 R- F. X' O, Ghttp://bbs.emagic.org.cn/forum.p ... ntable&tid=5278) S1 K0 U. u; F( n+ g
http://www31.ocn.ne.jp/~h_ishida/scripts.html
2 G. _+ T( d7 L2 z( V( L$ y" ]( Q# X" b( _! p

6 l- b4 |& q  W( Y* D: k--& ?5 M% y; z( v, h2 G2 K
http://blog.yeshj.com/luodean/
+ Q% ?1 c$ o$ h, X. L* A4 E' l' |1 `老马的原创空间:http://www.comicer.com/stronghorse/index.htm
) [! _: u# R0 M: e---, L- \' \! V6 d" i' Z! T$ e
1.  Ultra Edit中如何删除包含特定内容的行?  E7 g; }6 c" z# |7 I9 S
如某文件中有些行含有特定内容PTTAddress  B0 D8 D" t2 O& }
a. 使用替换功能,勾选正则表达式(Regular Expressions),替换内容为%*PTTAddress*^p,替换为为空;) A: X" w9 _2 f9 m  @& R
b. 删除空行,使用替换功能,替换内容为^r^n^r^n,替换为为^r^n;
- Y9 |! S6 p. Y" b  Q- j4 ia. 使用搜索功能,勾选列出所含内容的行(List Lines Containing Characters),搜索内容为PTTAddress;* [, E9 q0 v" E( u& k& n
b. 在搜索结果中选择拷贝到粘贴板;" r% N4 H3 m  n8 O5 M" i
c. 新建一空白文件,然后ctrl+v。

! z7 @- z+ S7 ^: O+ s$ G9 x) C! @9 s( P+ A, ?
2. 使用wget如何登录后再下载
: [9 T( u+ ?) h- |  r, `+ N* fhttp://tilt.lib.tsinghua.edu.cn/node/213" T" p) l" ~: Y' v% Y
5 ^% p$ ?9 p5 Y  K' j
3. 如何批量修改文件后缀名?/ y8 ?) R  {' M4 I. X
http://zhidao.baidu.com/question/423790075.html! Z3 @+ i" s$ @8 [/ u9 Y- f

, p" u% J9 n2 D8 E1 }$ S4. 如何把多个文本文档合并成一个3 K0 a- C! q2 F4 V! m
http://zhidao.baidu.com/question/172524472.html6 t( Y) z$ @( d" `' |8 d+ w
; ~* z5 K4 h4 F7 z
5. EPWING转txt
) C7 h4 ^. F( O" b$ Fhttp://coffeejp.com/bbs/thread-170502-1-1.html
( j2 {* f$ [0 `* A7 A- x+ O另:数千部日文小说和EBwin字典网盘分享 http://www.douban.com/group/topic/26642847/
: M% n) T8 f: g' f* Jhttp://www.coffeejp.com/bbs/forum-22-1.html3 f- B# l! D: ]
6 S8 G" Y. |5 D8 l1 ~
6. bgl2StarDict
# O! g7 V; S/ l. ~& h7 ohttp://code.google.com/p/stardict-3/wiki/ConvertBabylon
  _$ t8 |9 m# s% U$ s6 p5 S% ?- Y8 v; b8 V) H
7. Lingoes灵格斯电子词典LD2(LDF)文件单词提取器7 k( E! u* i6 c$ C9 ^' A1 V% G
http://code.google.com/p/lingoes-extractor/
- O' N& R. S- s% P  x1 D-
$ x; _; W6 t/ n) W0 S/ f5 G! Nhttps://github.com/windylea/lingoes-converter1 z1 y4 w8 {$ V  r4 B  T
- `$ x) z5 X2 I; @
8. lsd 2 dsl- r0 b8 e% L4 j. K
http://alabaxblog.info/2013/02/lsd-to-dsl-mass/
# u& K. g+ k5 X' R1 Y+ Zhttp://www.windylea.com/blog/201 ... or-abbyy-lingvo-x5/  @& O" |7 T0 Z) ~$ j/ b* a! Z

$ N5 }2 Y) s; P' [2 I7 v9. An Analysis of MDX/MDD File Format
: T: _# l% X- }/ m, o. B) ^3 hhttps://bitbucket.org/xwang/mdict-analysis
0 w* v; A* \: e8 q( t8 |7 rhttp://m.newsmth.net/article/LinuxDev/56948?p=1
9 f& S% e6 Q: e) h+ }http://mdict.codeplex.com/. F) q' X) P8 w: N; b
) g9 ?4 \4 h4 o: s1 z
10. 5 l+ ]* ]$ b: }2 n( B1 G
http://hanzisearcher.cnblogs.com/7 z9 ]3 N+ c7 @! S

' O6 }; W- ?  d11. RegEx Dotext 1.04 }" T7 X: M6 V0 q
mdx制作必备:RegEx Dotext 1.0,可合并词条,提取信息等
* ]+ \  p" ]: ]0 i9 }https://pdawiki.com/forum/thread-11430-1-1.html
2 ~. l( S# I" E. V1 \. G5 ?6 Y9 k: }: H
12. awk+wget实现批下载
, D9 W! c4 K- @( S; t# }http://blog.sina.com.cn/s/blog_4a1f59bf0100nifm.html/ I! {6 ]2 B. i' {. N" }0 o- G9 ]
# v) j* d* v; d9 S
13. 【awk学习】gawk+wget+grep写的小爬虫
) P* o* M  U2 S- ?# Mhttp://bbs.byr.cn/#!article/Linux/104263
5 m3 i/ U: ?5 Z
9 a* Z" E6 u0 j14. wget批量下载文件后,如何重命名!  }! e' m2 p+ S2 {8 `0 J; P
http://www.linuxsir.org/bbs/thread321272.html
6 P2 R, w1 [, w4 T" Q6 X* H8 L" ^. ^, H* i- J
15. http://www.regexlab.com/. \. E9 F4 z3 G. r4 T  q7 o) c

  w. l3 O) V; @5 U' J16. EBDump) B& g' I. w+ v- d
http://www31.ocn.ne.jp/~h_ishida/EBDump.html: v5 p2 M9 P0 {( D, [
http://www31.ocn.ne.jp/~h_ishida/EBDump/EBDump.html
5 Y& @4 ~$ H4 d. U1 r" f% M0 W  R6 Y/ b$ d2 T
17. Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup)) D/ X; ]$ G/ a# J0 V- T  b
http://www.360doc.com/content/13/0929/20/11729272_318036381.shtml) |  X+ H( j" O0 _1 \# i  L4 h

5 I7 R* f" P% q) O18. [转]用python爬虫抓站的一些技巧总结
) ~6 M9 X8 D* f3 ohttp://hi.baidu.com/txcbg/item/9b10b9562c275b9408be176a
0 r4 @- T& s6 o: D4 S9 ~# Y6 C) S$ I+ a2 \% i0 A5 c
19. Python爬虫入门教程- i7 r  U' M. s5 o8 ]8 e
http://blog.csdn.net/column/details/why-bug.html2 y% ]1 S' p" p: o4 O

* v8 Z; h) J, _9 W=========% b* m9 m  z" i& A& h' h4 c
EPWING相关:
/ `* ^' r# O3 F! W. qhttp://hp.vector.co.jp/authors/VA021723/dessed/
" E# ^; c7 w5 P7 e# K( t" H0 L) }" _* V; r+ _$ ?& W

评分

2

查看全部评分

本帖被以下淘专辑推荐:

该用户从未签到

发表于 2014-6-2 11:26:50 | 显示全部楼层
本帖最后由 meigen 于 2014-10-7 01:45 编辑 8 P4 i  U2 j( ?. E/ p- ?! G
6 R+ V  q' o+ D) q; e
提取Epwing词典图片的java代码
+ q! u2 j' H" X" {# F; r( M1 Z  PEpwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两种图片格式不同需要分别分析
6 K7 a) q" M( k. b5 n. {3 k首先是彩图2 r& ]* Y, M$ p/ n: a6 O
格式说明:每张图片以“data”(64 61 74 61)为起点标志,data后面四位是该图片的数据大小,比如“6B E3 00 00”表示这个图片大小是58219字节;后面是数据部分,要提取的内容就是这个
2 G+ J3 h' x* c# s4 U6 H提取有两种情况,一种是先用ebDump导出txt格式,然后用txt来提取,一种是直接用HONMON文件提取,省去了中间步骤
( o/ k% W* U9 [0 ]) {先介绍用ebdump导出txt格式然后提取彩图
  F$ q6 }$ H! g, K& {
  1. final static char[] DIGITS = {( W9 O, e1 L9 Q6 D
  2.     '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' ,8 P1 h; l8 L4 P/ m; @& x# L
  3.     '8' , '9' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F'5 w9 C  ^' s) j6 b7 b" x+ j4 t
  4. };7 h9 }$ R* [$ B
  5. public static String toHex(int i) {6 M6 l/ J( U* r! J# Z
  6.         char[] buf = {'0', '0', '0', '0', '0', '0', '0', '0'};" B: J3 z' ^6 @- D1 L  v* O, Y7 i
  7.         int charPos = 8;
    5 K+ M2 c: _6 G, c8 H
  8.         int mask = 0xf;3 K% d6 S% i. i4 f! G3 J- u
  9.         do {3 h0 ]- H+ X0 a9 P3 U1 w' x
  10.             buf[--charPos] = digits[i & mask];
    . A/ }" ]4 Q! T; N& X7 I- G9 F
  11.             i >>>= 4;
    7 r! N/ S: {0 d( R" @
  12.         } while (i != 0);" i, l+ _$ ~1 U- ^( q
  13.         if(charPos > 4) charPos = 4;
    * k! s/ o5 h6 A( b0 h
  14.         return new String(buf, charPos, (8 - charPos));0 G4 o8 }7 O. D7 h5 {  i
  15. }
    # d) ]7 P7 X7 @! F8 z* f
  16. static void getColorPic(String f, String path) {. j2 b/ U* v& b. b) I  x; o
  17.     try {
    8 F2 m/ [* P: ~6 v$ {
  18.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f), "Shift_JIS"));
    2 ]6 ]+ K. J5 ^) h
  19.         OutputStream out = null;# G  _( N: c/ u" o( u
  20.         String line = "";# k* o1 _& {) |, [" N7 ]1 S
  21.         String block = "";
    3 H: M. D, K2 D9 ]" v9 A
  22.         byte[] bs = new byte[2048];1 s: ]- T2 i+ Q  v
  23.         int idx = 0;
    6 G2 @% _0 X4 C/ B8 C# _( `/ R
  24.         if (!path.endsWith("/")) path += "/";- G1 L% Q/ b$ k% H
  25.         File fl = new File(path);
    ' R+ _1 J+ Q( @( C; g
  26.         if(!fl.exists()) fl.mkdirs();
    - O, F# e" J7 `5 [! }
  27.         while (((line = reader.readLine()) != null)) {3 r% m0 [; G7 h, _8 o- A9 b
  28.             if (line.startsWith("block")) {0 y0 b; k+ v0 x8 r0 w
  29.                 block = line.substring(6, line.indexOf("("));
      n# e6 [; t9 _# s" B' y
  30.                 System.out.println(block);
    3 U% O1 c, @/ x
  31.                 idx = 0;: }7 m, U. K- n! ^
  32.             }1 F1 o  ]4 s+ ]! v3 F
  33.             if (line.startsWith("0")) {" ~7 I/ f4 r3 K% s, Z, K
  34.                 for(int i=0; i<16; i++) {
      J% S3 o: [- p( K7 h
  35.                     int a = CHARS.indexOf(line.charAt(5+3*i));$ E* T7 K9 A7 \6 g
  36.                     int b = CHARS.indexOf(line.charAt(6+3*i));
    / X/ U7 L$ ~: a/ R$ ]0 q
  37.                     bs[idx++] = (byte) (a << 4 | b);
      W, o% y7 m6 M9 T3 J
  38.                 }
    + \$ W: [7 L) Q9 j8 k
  39.             }
    + {# W' K/ p5 L9 P
  40.             int dts = -1;
    5 R; c3 a. D! z1 h# D; X
  41.             int ws = 0;
    5 b0 h* P! ]/ P
  42.             if (idx == 2048) {! M' H& P' I2 `: @$ W7 m
  43.                 for (int i=0; i<2044; i++) {
    0 u: M. D% u; @' k+ }
  44.                     if (bs[i]==0x64 && bs[i+1]==0x61 && bs[i+2]==0x74 && bs[i+3]==0x61) {
    ) u* W8 X7 V- f
  45.                         dts = i;
    ; Z, f% H7 M2 L3 X6 H: _) m& s
  46.                     }1 n: g7 C) Q6 Q% H7 n
  47.                 }
    6 ?8 L/ P& t$ J  q8 f3 h
  48.                 if (dts != -1) {
    ' R9 u. @5 W7 P
  49.                     if (out != null) {
    6 ~" W" r, w- s; K  {/ o
  50.                         out.write(bs, 0, dts);! G% _% R3 }0 ^
  51.                         out.flush();" _; D1 z) L4 e) s
  52.                         out.close();! L" r/ j7 s8 J- ]: A" @6 Y/ A
  53.                     }
    % r! N" J, |! S' F4 E! V1 G  p# t4 U: x
  54.                     out = new BufferedOutputStream(new FileOutputStream(path+block+toHex(dts)+".bmp"));
    2 k: L, t7 F3 m& [# ^( |
  55.                     if(dts > 2040) ws = dts-2040;
    0 v( M# N3 ^* L" v
  56.                     else out.write(bs, dts + 8, 2040 - dts);3 P+ l% F+ _6 |$ O8 |. E
  57.                 } else if (out != null) out.write(bs, ws, 2048 - ws);* o; x9 _8 }7 x7 V7 P' {6 W/ Q
  58.                 idx = 0;
    + u0 l! j8 D7 I& a/ h; P* B
  59.             }
    6 G$ T% W2 G0 F
  60.         }, T) j" n/ k% i5 F9 i0 q
  61.         reader.close();
    4 |% h" n) F  X9 P
  62.         if (out != null) {
    2 A9 F- ?& u: i4 N/ w* Q* f
  63.             out.flush();
    0 a& H& y+ X3 s; E
  64.             out.close();' X9 ?6 P9 h' k, \( D" N
  65.         }0 k0 W( f) s* w# ?2 r, p
  66.     } catch (Exception e) {
      _2 f6 w. b, u6 X" N9 B
  67.         e.printStackTrace();; S% t% h" B9 M1 }
  68.     }
    7 B3 o, _6 {4 Y% Q9 r4 i1 j
  69. }
复制代码
getColorPic(String f, String path) 参数说明: f是图片导出的txt文件, path是保存图片的路径

点评

请问,还有 EPWING 转 MDX 的 工具 吗?  发表于 2018-9-6 14:32

评分

1

查看全部评分

该用户从未签到

发表于 2014-6-2 17:03:11 | 显示全部楼层
本帖最后由 meigen 于 2014-10-10 20:19 编辑 / q" Z) k! D% R! P1 |

2 l, r! a/ P% V7 t接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情
( a4 [! r" H7 U  {- d/ G7 }先用ebdump提取出词典文本(本文),然后在里面获取单色图的代码(<1F44>开头,<1F64>结尾)
( Z0 L& \; G+ u5 G* i: o可以看到
- O0 e& E* J" T" g: Q& g6 _9 G<1F44><0001><w=200,h=256>xxx<1F64>[0001A4BD:0027]0 ]" d1 o5 I# K9 {
这里的w=200,h=256表示图片的尺寸,这个参数后面会用到1 C8 q+ G) T0 Q$ l+ ]
然后<1F64>后面的这一段[0001A4BD:0027]就是单色图数据地址了3 C& {+ O# |9 N) B3 W- u
先写个Demo 把所有地址都提取出来,顺便排一下序,去掉重复:% I& n8 u! T! ?( Z4 ?) Z
  1. static void getMonoTag(String f) {$ A) t' F! D" C) T! o% k- |
  2.     try {" P; o6 f9 o! ~4 P9 ?5 E
  3.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));& {- S( x( [1 ~6 v! j+ C
  4.         BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f+".mono.txt"), "UTF-8"));& ^$ e. B; W, ?1 C  {
  5.         String line;: u# V) Q. B( i0 g1 I
  6.         ArrayList<String> monos = new ArrayList<String>();, o7 j8 I+ b# [- F) Z; m; T
  7.         while (((line = reader.readLine()) != null)) {
    . Y- t4 N# ~, [& s
  8.             while (line.contains("<1F64>")) {5 {' X; Q' a) m( x  c. p& b
  9.                 line = line.substring(line.indexOf("<1F64>") + 6);
    ( T# f6 `  s4 {5 S1 P; }
  10.                 monos.add(line.substring(0, 15));
    & F7 {9 O* H: e# p' @
  11.             }8 {6 k1 b) V2 t1 y- y2 g4 d
  12.         }7 p' `; P( E) l. Y: z- B. C% D
  13.         reader.close();6 a; H' |/ `# `& F9 j) I
  14.         String[] monoa = new String[monos.size()];
    : v3 i, k  _) C! y1 ~
  15.         monos.toArray(monoa);7 F4 K) y. K0 t4 X' u' |+ a
  16.         Arrays.sort(monoa);# m0 |% z1 ~, A  B
  17.         String last = "";
    8 G% o4 R" V3 L: _$ L$ t& q. {
  18.         for (int i=0; i<monoa.length; i++) {- K) z$ d# D. z
  19.             if (!monoa[i].equals(last)), G# [- B" W# t9 ^
  20.                 writer.write(monoa[i] + "\r\n");
    8 y" ^5 v# d: }. R$ k0 {! Z
  21.             last = monoa[i];; R( k% A& p2 ]2 i
  22.         }8 `. n! }$ r9 a) l5 C8 k
  23.         writer.close();
    # C; @7 b1 \/ Q* }; f
  24.     } catch (Exception e) {! I  f6 V; M8 t! K, E
  25.         e.printStackTrace();
    . a2 c# p; m$ m* Y6 r! T
  26.     }
    9 e% L7 B# ]# t- B/ N; C7 C% ~& [
  27. }
复制代码
2 ?$ \. Z5 E3 G/ V5 B& t1 J
得到了一个.mono.txt的文件
5 v: {* l' H) V; j# x: M4 J然后开始提取:6 ^' {8 h, s& S% x/ h
上面有提到w=200,h=256这两个参数,不过epwing好像弄反了,200是高,256是宽。 - -: B! Z3 Y' W( |  q1 v5 J
提取过程中需要手动加上图像的文件头,可自行百度bmp文件格式+ @  @% T  n; [7 n2 o2 `
  1. static final int WIDTH = 256;
    # {0 `7 H' @0 k+ h" t
  2. static final int HEIGHT = 200;6 y% C1 i. ]( t& H
  3. static final int WIDTH2 = 32;
    + S$ o( J( a/ X! w, l4 q
  4. static final int SIZE = WIDTH2 * HEIGHT;6 q: t/ d" i2 ~% f0 i! x
  5. static final int FILE_LEN = SIZE + 62;5 l& P, J8 C, q" r4 ^6 E% @9 E
  6. static byte[] filehead = {0x42, 0x4d,' @* _" q" J. e( O2 ^* x
  7.     (byte) (FILE_LEN & 0xff), (byte) ((FILE_LEN >> 8) & 0xff), (byte) ((FILE_LEN >> 16) & 0xff), (byte) ((FILE_LEN >> 24) & 0xff),
    2 I% \& k5 p. ~! A
  8.     0, 0, 0, 0, 0x3e, 0, 0, 0};
    4 T  \0 ^' Z  p2 W* E/ V6 I* s
  9. static byte[] infohead = {0x28, 0, 0, 0,. s- L* M, x% b5 M$ N7 D# M6 L* d
  10.     (byte) (WIDTH & 0xff), (byte) ((WIDTH >> 8) & 0xff), (byte) ((WIDTH >> 16) & 0xff), (byte) ((WIDTH >> 24) & 0xff),+ f9 U! Y, m9 Q* e6 k
  11.     (byte) (HEIGHT & 0xff), (byte) ((HEIGHT >> 8) & 0xff), (byte) ((HEIGHT >> 16) & 0xff), (byte) ((HEIGHT >> 24) & 0xff),
    : n$ x" r4 D) E6 w, v" l
  12.     1, 0, 1, 0, 0, 0, 0, 0,
    / b' J" L2 X2 c4 f
  13.     (byte) (SIZE & 0xff), (byte) ((SIZE >> 8) & 0xff), (byte) ((SIZE >> 16) & 0xff), (byte) ((SIZE >> 24) & 0xff),& u1 |& L' m, Z( m. Z6 A
  14.     0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, -1, -1, -1, 0, 0, 0, 0, 0};
    ) Y! e: \) c( K$ |9 `
  15. static void getMonoPic(String f, String m) {; C+ F" P, D5 o, \
  16.     try {! G) c( E0 T4 E; ^
  17.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));
    " r. i3 v& n; R9 v; Z" o% g
  18.         BufferedReader reader2 = new BufferedReader(new InputStreamReader(new FileInputStream(m+".txt"), "UTF-8"));" U& I7 _( M: M: m# A1 w% ~6 Q
  19.         OutputStream out = null;9 @2 w; |2 s2 o
  20.         String line = "";
    ) E! e9 W1 [! h$ v% ?( A' Q
  21.         String line2 = reader2.readLine();1 I% N' l% T/ V- G# R7 V6 E
  22.         int block = 0;+ o- X' m! G: ?7 @0 L- z8 y/ |& c' y
  23.         int block2 = Integer.parseInt(line2.substring(1, 9), 16);3 o0 G- O3 i3 x  ^! O9 y6 t
  24.         int offs = Integer.parseInt(line2.substring(10, 14), 16);
    . |) V4 U0 u1 W* O( r/ Y
  25.         byte[] temp = new byte[2048];( @- Q& x& }' w7 j1 [8 X
  26.         byte[] data = new byte[WIDTH2 * HEIGHT];$ v7 B8 z4 X8 @" c. @
  27.         int[] idxs = new int[WIDTH2 * HEIGHT];
    0 `* P' G8 X# T4 B
  28.         for (int i=0; i<HEIGHT; i++) {4 `$ l7 P& a1 T& z
  29.             idxs[i * WIDTH2] = (HEIGHT - 1 - i) * WIDTH2;) v7 K4 N2 c; k! B3 ]) _) L
  30.             for (int j=1; j<WIDTH2; j++)
    3 @" n9 _6 I5 p. `0 q
  31.                 idxs[i * WIDTH2 + j] = idxs[i * WIDTH2 + j - 1] + 1;5 L# L5 K* H+ q( _; w2 A
  32.         }
    ) n( s3 S( |& {. ]+ f; d
  33.         int idx = 0;
    $ `4 x0 I' ^: h. a% {7 L
  34.         int didx = 0;# f$ C. @3 U. |2 u
  35.         while (((line = reader.readLine()) != null)) {7 R- i+ J& N4 b( Q. n6 y+ ]
  36.             if(line.startsWith("block")) {
    1 k: F5 t7 o% r; ?
  37.                 block = Integer.parseInt(line.substring(6, 11), 16);
    " B' ]  C# P+ n- w% n
  38.                 idx = 0;
    * @' L; p. S* [- d9 c  x. s) Y# x
  39.             }
    + [# i8 I: D) Y) |
  40.             if(line.startsWith("0")) {
    . W8 N2 d& E: n' ~3 d/ `7 A  ]" ^) R
  41.                 for(int i=0; i<16; i++) {
    . h& ^3 w- q" q% V$ f8 _5 j) j$ h
  42.                     int a = CHARS.indexOf(line.charAt(5+3*i));
    1 s/ _. [1 G% S/ f7 r" {
  43.                     int b = CHARS.indexOf(line.charAt(6+3*i));& \* d# Q5 L/ X: z5 e
  44.                     temp[idx++] = (byte) (a << 4 | b);
    * u2 W/ @  S* E/ Z
  45.                 }
    * T# y, t% r7 M3 C0 n0 G" t9 Q& F
  46.             }# p3 G' y8 z" o
  47.             if (idx == 2048) {
    7 ~; a4 k8 ^) K0 R
  48.                 if(block < block2) continue;( F' G& |" L+ X! d3 x
  49.                 int start = offs;
    " b* O1 v# v/ Q/ @' M! U, e
  50.                 if(didx != 0) start = 0;
    3 Y8 n1 A* |, C) R! f) g
  51.                 for(int i=0; i<2048; i++) {
    ; }- c$ U8 r) l0 l$ r0 A" U
  52.                     if(i >= start)/ ^7 ]# F4 k% y; a! b0 H% u
  53.                         data[idxs[didx++]] = temp[i];1 {  ?: Q4 w# h  k  u+ `  l
  54.                     if(didx == WIDTH2 * HEIGHT) {$ U- S4 \0 Q* V5 ]& H* p/ H* ~
  55.                         System.out.println(toHex(block2)+"."+toHex(offs));
    " T4 \9 R* T1 t, I1 v4 e/ a/ _9 E
  56.                         out = new BufferedOutputStream(new FileOutputStream("pic/"+toHex(block2)+toHex(offs)+".bmp"));3 |6 B7 e9 m3 _" @. r+ I* e7 Z& c- G
  57.                         out.write(filehead);
    8 k$ f3 L% Q- Q# I  X1 u) f& S6 y
  58.                         out.write(infohead);  C: \- }  y$ h( A1 F6 z0 b' \
  59.                         out.write(data);
    & `& g3 t* }& {; ^  d$ n: ?
  60.                         out.flush();6 j, ~) C* G* o5 K  X4 L3 |
  61.                         out.close();
      [3 U  J7 G) Z/ G$ h8 ?7 ~
  62.                         line2 = reader2.readLine();! r) S7 s6 d! ^2 M
  63.                         if(line2 == null || line2.equals("")) {3 D: G% s$ a) i, U( L) r( a
  64.                             reader.close();
    3 }' d+ T& e1 C! _/ ~% L
  65.                             reader2.close();
    % R: L* g/ L: ?! p
  66.                             return;) s0 v# w- Z0 o6 C  f
  67.                         }
    ; s1 B4 U; J( T- r5 M6 B% a
  68.                         block2 = Integer.parseInt(line2.substring(1, 9), 16);( f* C7 |) T" x7 y+ s( [* s% ]& t' C
  69.                         offs = Integer.parseInt(line2.substring(10, 14), 16);( i6 _. X* M4 x4 ?1 m; n2 X( _
  70.                         didx = 0;
    & l1 e8 t* s$ }; v+ b0 }
  71.                     }
    & `. f; q* W9 G' H6 j  H7 W8 ~  x
  72.                 }% S8 F; s& J. M0 o: }" h5 P6 z
  73.                 idx = 0;
    & ?$ D  _; _$ Z
  74.             }# ~. Q0 F+ D  D6 I
  75.         }
    & V! r- F; f) M7 K; v0 @# Y
  76.         reader.close();' Q8 u! c4 ?! e0 d
  77.         reader2.close();" [( c  g$ |, w3 X& G
  78.     } catch (Exception e) {/ C" r1 e/ k' t4 `2 K& l
  79.         e.printStackTrace();
    5 _4 x+ l7 S5 k4 m' `8 `+ H
  80.     }
    , t1 I/ M, P5 B6 ?0 Z- B+ ^- q/ f
  81. }
复制代码
# G- B6 t! U% u) U6 Y/ w
待编辑..." z. N. X7 g( U7 b. {2 r
0 ?5 d5 t4 N8 U" T  J
回15楼:
+ Q9 _5 l/ f4 m/ x
能把代码用附件形式上传么?顺便使用说明用英文。
. `0 c$ S2 {5 O
代码有一些要改动的地方, 我完善一下就传附件
& _5 P8 h$ x* ~" w# a另外用英文说明这...{:11_336:} $ z, C" S. l" G6 z
我先用中文注释一下, 然后再慢慢翻译

评分

1

查看全部评分

  • TA的每日心情
    开心
    2019-8-11 07:55
  • 签到天数: 606 天

    [LV.9]以坛为家II

    发表于 2013-8-25 17:56:54 来自手机 | 显示全部楼层
    楼主辛苦了。

    该用户从未签到

    发表于 2013-8-28 11:29:54 | 显示全部楼层

    该用户从未签到

    发表于 2013-10-23 12:56:25 | 显示全部楼层
    这帖子太好了。现在上的课正好跟html,jsp,sql有关,可以有针对性地学一学了~~

    该用户从未签到

    发表于 2013-10-24 09:37:16 | 显示全部楼层
    辛苦了!
  • TA的每日心情
    开心
    2021-1-11 09:04
  • 签到天数: 83 天

    [LV.6]常住居民II

    发表于 2013-11-1 23:10:03 | 显示全部楼层
    对我们这些没有软件基础的可咋整?

    该用户从未签到

    发表于 2013-11-3 10:47:35 | 显示全部楼层
    不懂,只知道怎么使用,仅以回帖表示赞同
  • TA的每日心情

    2023-7-8 07:03
  • 签到天数: 20 天

    [LV.4]偶尔看看III

    发表于 2013-11-7 08:29:45 | 显示全部楼层
    楼主辛苦了,谢谢分享

    该用户从未签到

     楼主| 发表于 2013-11-8 00:02:28 | 显示全部楼层
    高手们都歇了,或者对词典不感兴趣。
    . e! s0 H' N$ R6 g其实目前新的词典资源,主要集中在iOS、Android应用上,一些数据dat啊,db啊,都有加密,要破解啊,技术含量很高噢。8 }1 o# q- J5 ]  i( I
    -
    $ e) M0 j& C( c% f" l! P一些扫描的词典,要做成pdf,基本就只有靠神人出手了。网络合作校对或录入?我从来不觉得这事儿靠谱,志同道合的、对同一语种同一词典感兴趣的人太少太少。慢慢等吧。{:5_214:} , |& E2 x. a" M* W5 i- c

    该用户从未签到

    发表于 2013-11-11 10:58:55 | 显示全部楼层
    一直想制作啊,太复杂了,文科生一枚,看得我头晕。2 A6 K, u7 E* `- I3 o2 |
    其实我只是想制作一个自己个人的词典,因为自己从事英语教学,有些单词讲解有自己的方式,要是加进去,以后备课就方便了。
  • TA的每日心情
    难过
    2023-11-26 08:44
  • 签到天数: 49 天

    [LV.5]常住居民I

    发表于 2014-1-21 18:03:13 | 显示全部楼层
    看看,学习!谢谢

    该用户从未签到

    发表于 2014-2-18 10:51:18 来自手机 | 显示全部楼层
    这个很赞!+ N/ ]! q& O9 V9 u  u! g8 ~
    最近打算扒维基来着。

    该用户从未签到

    发表于 2014-6-1 17:32:34 | 显示全部楼层
    好贴收藏。

    该用户从未签到

     楼主| 发表于 2014-6-2 14:18:15 | 显示全部楼层
    meigen 发表于 2014-6-2 11:26 3 A, ]  _. r( x
    提取Epwing词典图片的java代码
    8 R) o4 O+ h2 t" `  k- a5 zEpwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两 ...

    + Y& ^* a( @) P% c! ^{:5_227:}
    # ?% m0 S/ f- K& h" o" |
    ( F7 X* V* n- ]9 Y) y. ]论坛用了防转载插件还是什么的,复制代码的时候后边会加上一堆乱码。9 K7 E% }( b( \/ n$ o: ]' q+ z  C+ O
    能把代码用附件形式上传么?顺便使用说明用英文。. C% M5 X7 K" L* d: p
    辛苦辛苦~
    & x& V( a9 c: x% y8 k* i. P

    该用户从未签到

     楼主| 发表于 2014-6-2 19:29:10 | 显示全部楼层
    本帖最后由 Oeasy 于 2014-6-2 19:31 编辑 , Q* `6 \4 C' A  i* Q% y
    meigen 发表于 2014-6-2 17:03 $ C' c, ^1 Q3 ?, \! T9 K
    接14楼, 单色图的提取稍微麻烦些, 他里面只有数据部分而缺少文件头, 这个是比较头疼的事情' b( e/ k& L0 q9 U
    我们可以先到词 ...

    2 n9 R2 }7 Z7 `/ X+ P! G& K% Y7 z7 g, T
    {:10_240:}
    : x) @: N6 F+ _% ~& m6 F; r* P8 x8 T" p
    。。。。6 d0 n/ A2 A4 e) V$ D  x) J
    其实GoldenDict支持EPWING了,尚稍有瑕疵,但已然近乎完美,不敢要求更多,感谢Abs62大神。7 m. B( l/ F( K& H
    http://goldendict.org/forum/viewtopic.php?f=4&t=29220 }3 U5 f7 O$ U0 P4 w. Z
    http://goldendict.org/forum/view ... =2091&start=300/ Y- F2 G  u& q6 @
    不过能把EPWING转出文本 & 图片,制作为dsl、mdx等,进行个性化排版,这些啊,始终是让人愉悦和有成就感的事情。。。{:10_228:}
    / d4 ?: X9 G* O/ I
    & N& f, p5 _5 E6 ?- y# A

    该用户从未签到

    发表于 2014-6-8 18:42:15 | 显示全部楼层
    这个帖子太棒了!必须好好学习一下啊。
  • TA的每日心情
    奋斗
    2018-12-10 10:05
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2014-6-23 15:54:42 | 显示全部楼层
    几位大神都离开啊,只求不定期更新词库
  • TA的每日心情
    开心
    2021-5-6 12:15
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-7-31 20:23:48 | 显示全部楼层
    。。。长期学习阵地

    该用户从未签到

    发表于 2014-8-21 08:12:58 | 显示全部楼层
    文本编辑器:Editpad无论是对正则的支持还是替换的速度已经把EmEditor、Notepad++之流甩开几条街了。) a3 s6 {) d/ r/ t* w4 V1 I

    该用户从未签到

    发表于 2015-1-2 00:39:31 | 显示全部楼层
    其实几个程序员常用的文本编辑器功能都蛮强大的,ue功能最多,复杂,emediter不错,对中日韩字体支持最好
  • TA的每日心情
    开心
    2019-5-18 14:33
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2015-10-18 00:11:23 来自手机 | 显示全部楼层
    meigen 发表于 2014-6-2 17:03
    . X( A  [( J  a9 o  g接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情
    % \) P$ R: o- |( ^% Q! A! A先用ebdump提取 ...
    + `- D; Y% O, d( @1 S3 R
    好文,谢谢。

    该用户从未签到

    发表于 2016-1-30 21:11:09 | 显示全部楼层
    不懂,仅以回帖表示赞同
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-20 22:46 , Processed in 0.161033 second(s), 14 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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