掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 28032|回复: 45

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

  [复制链接]

该用户从未签到

发表于 2013-8-25 10:34:14 | 显示全部楼层 |阅读模式
本帖最后由 Oeasy 于 2017-9-19 15:42 编辑
5 g. }# r* |3 A  q3 B' r* a' z( L8 Z, f2 B% F0 K* B
1 ~- k* ]  ?- s( p! S
FAQ
4 |' c  o* E5 E, S>>  未加密的 mdx 如何转为txt?% K* G# F% _0 B5 L/ u
工具①,GetDict.exe by yhssdl。下载地址:& n; Z. K+ e( m9 Q" l
http://pan.baidu.com/share/link? ... 67&uk=305151372
/ k7 _, {; O0 [! I1 f, u% N5 b2 Y9 }/ @
>>
% \* s" a9 `: C& Y[实例][解压mdx/mdd再打包为mdx/mdd][乱][多图]  https://www.pdawiki.com/forum/fo ... hread&tid=13388
) \1 h. @  f+ o- ?/ v
+ R- l( o8 T7 G& z
/ g0 ?1 Z8 k1 ~9 I1 c5 l& _老马的原创空间 http://www.cnblogs.com/stronghorse/
9 \& X: }6 O2 ^0 H9 V- k6 o
! n% a! @. q2 T$ G
. t+ w% b2 K$ `. L0 t" S- Gbgl-> txt https://www.pdawiki.com/forum/fo ... &fromuid=147948
5 q# c' t- e0 r5 s
7 X- e/ L2 `- I5 p  p7 Q9 h" a' a* E" d
4 |$ p* \8 j( ?, U. V. S% V( I  z

' a# x1 g* S2 I% U. Y: e$ I  m/ U6 u8 x" `

# o: A# d& n& X. J1 n# E整理中,欢迎补充
; j0 ?5 g& D6 D: ]; _* Umdx制作非常简单,但是要获取源文件,或把词典做得很漂亮有的时候是需要下一番功夫的。
$ a' X( e1 |# v5 n: q正则表达式Regular Expression, html, xml, div+css,
2 i/ t! H$ \6 V0 N' T2 }$ q. R编码,尤其是汉字编码的一些知识,神马UTF, GBK, unicode。。。{:10_300:} 4 N- D: e5 y: Q+ a4 Y0 I* O8 T9 Y
程序设计语言:
" b' W* k8 h* k3 \2 sPython;C++;
8 g3 x/ A% J# m! I' l$ L% j+ X3 K7 @" E& kPerl1 ?% W3 }9 O$ ~) @
JavaScript : http://www.w3school.com.cn/js/jsref_decodeURIComponent.asp) a! O8 w) C+ D4 i
VBS/VBA
) }) E- L# C/ Q7 a0 i; x: Jhttp://www31.ocn.ne.jp/~h_ishida/scripts.html
3 Z! u# r& s) }# u数据库软件:
' I: H7 M5 f' O! x, @. p; F$ K3 J2 YNavicat Premium
4 g8 V& U  n8 K% U7 LSQLiteSpy,PowerBuilder$ I" F5 q  h! |
SQLite Expert Professional. ?( K- h. F; M) E! u
软件:
4 H; S& s# ?1 f& @4 H- CMDict,MdxBuilder: http://www.octopus-studio.com/download.cn.htm
( `" L2 J4 W2 S) g# Y5 s4 j! W# B
4 \$ g! Q/ L* H2 A' g文本编辑器类:Notepad, Notepad++, EmEditor, UltraEdit, EditPlus, ) H- e; P- ^( }1 A6 W5 t
Replace Pioneer http://zhidao.baidu.com/link?url ... KEcUNfmzOo7nLH8BSNq
( l  P+ W7 P. {, K5 P" oRaptor 3 http://softfie.com/software/hacktool-raptor.html+ ^* E8 b' X# _" b7 J$ k7 M
awk 4 Windows :http://sourceforge.net/projects/ ... -1-bin.zip/download
% u6 p, I7 ^# a/ O" H8 S  k* ?" c9 G' m: ~! C
Microft Office:Word, Excel, Access: k' i' v) i9 k& v7 N* m3 o
Adobe: Adobe Director (某些光盘是用Macromedia软件做的,用这个可以提取语音),Adobe Acrobat Pro
1 b3 t! S$ V: n- QOCR:ABBYY FineReader
4 F( J: k5 z6 z8 nDWS: Tlex
$ e4 P0 U/ N6 X5 C2 k: n' N浏览器:Firefox, Chrome: D: M0 T9 Q2 T6 A2 E; ]; x

5 N$ h4 G9 @4 |4 P% G7 \解压缩软件
2 \7 J. g7 ?8 W9 U3 L! G 0 p4 d. r4 `# m  `
8 D9 X7 t2 G8 t: Y, K
离线下载类:, k6 ?) j5 o) u4 k
wget, Teleport Pro, OfflineExplorer
# X0 {1 O6 N' ?. J3 f其他9 x, s# [+ Z% y! p3 }9 s
Fiddler 2, ; s* X+ o8 t7 a8 H: H
SQLiteSpy
. R, q5 Y" ]- a3 T$ r9 ?yhssdl的GetDict2.61 v( Y$ c- V1 c$ O+ H2 C& p
AudioTranscoder
" n6 _* x$ b+ O8 k按键精灵7 d  h0 X8 c& v, a% D3 m
Tvangeste / dictzip-win32
# p' _0 Y# J0 c- p& e( m" bhttps://github.com/Tvangeste/dictzip-win32/releases/
8 @) A- h$ V" A  D3 i% C& V+ m
' j2 e2 |( e& f& S% Q! C  o' E! ldsl相关软件:
5 c, _+ y6 m: ?/ CDSLGD. Q+ f/ X) k$ f$ c
" T  g( u6 z: r- k4 b6 n
有参考价值的技术(讨论)贴:
7 ^1 H2 U8 G: r, D  ^* @% t* X0. superfan89
. k$ ~+ }, L5 g2 |6 E9 x( Q' Q[英汉-汉英] 21世纪大英汉词典&新汉英大词典【11/8/1更新】: https://www.pdawiki.com/forum/thread-7022-1-1.html, 帖子附件有ydDumper源代码7 l5 _8 h/ b% u  w) i/ G+ n7 s2 \
https://github.com/superfan89/IDMSKconv IDMSKconv源码
$ O' W+ M% }$ N3 Y, T/ @( jhttp://dicwizard.jp/jamming_ug.html
2 u( l9 M6 f9 Ihttps://www.pdawiki.com/forum/fo ... ctionary&page=3 63楼
* q1 [& h0 ~8 N% d7 ]- m# K) b) w1 C1 q+ X, S- F
1. chigre0 o. w9 x' B5 A  M1 U# w
【直播完成】一个在线词典的离线MDX化制作[2012-11-29]:https://www.pdawiki.com/forum/thread-10260-1-1.html
) n# o. `; E, O# e% v: o各种格式词典数据转TXT文本的工具软件(.BGL .LSD .LD2 .MDX STARDICT) https://www.pdawiki.com/forum/thread-10267-1-1.html
! g& A3 w& O8 i/ V0 o% _. J, j/ ^[其他语种] Z意汉汉意词典转制效果: https://www.pdawiki.com/forum/thread-10796-1-1.html
" p4 {. q) r' G1 j1 H% ~" L, u" S3 v) O) r
2. Hugh
7 k- ~( |. A  v, L% o【图文】手把手教你[转换]+[排版] MDX格式词库: https://www.pdawiki.com/forum/thread-10689-1-1.html# b" y6 U% B1 N) w

) r( C4 E1 C' m3 j1 w3. ldlcau8 ?! h( g) c$ Q
mdict版制作方法和常用工具: https://www.pdawiki.com/forum/thread-899-1-1.html
# A1 n# Y3 v1 r: u0 F7 L4 p3 z! w0 j$ f# E6 ^
4. Oeasy
6 c, A5 D6 k" U! [2 t" G3 X【2013.07.06】如何利用Microsoft Word排版制作.mdx? : https://www.pdawiki.com/forum/thread-10801-1-1.html
+ L0 j. Z/ ]$ U& Y7 L5 O7 R/ c) B3 J4 \" I; l
5. jjcizi
8 n2 G- L1 E& P9 P" `" R; \5 Z" e1 U[BlueDict] 一种把Excel转换为MDX的方法: https://www.pdawiki.com/forum/thread-9600-1-1.html) M) N! o9 M; j2 K1 P

. v& m% T1 j4 c& X. b6. sunsmile232 p, C4 |: ~% m' l
汉英词典的汉字显示问题: https://www.pdawiki.com/forum/thread-10809-1-1.html
% P5 R' Z5 M7 ?- E, dvba如何正确地输出UTF-8编码文件: https://www.pdawiki.com/forum/thread-10832-1-1.html
8 ^6 K3 e4 }" {. V; B
; P1 h" L  z2 a7 b7. sjn01
3 Y+ I* t7 D  l$ Z$ G求助,能否将Collins COBUILD 高阶英汉词典做成MDX?:https://www.pdawiki.com/forum/thread-6626-1-1.html' P# Z' U- m- b" H9 O! r: Y
2 U/ ?5 c/ C/ `6 }
8. 惟吾无为( |" {3 k# o( W$ k) j: M  s
linux下制作离线百度百科的思路(含成品): https://www.pdawiki.com/forum/thread-9256-1-1.html
1 a+ f& e+ A- W: b3 |. a$ Z
3 I3 T+ T1 B: m9. freegut
( ?0 `/ P7 F8 i1 J分享Lingvo到MDict的转换经验: https://www.pdawiki.com/forum/thread-5386-1-1.html
0 Y% u/ y& c5 l" `/ o
0 ?  s# d; k, C3 h3 @* ?8. zhu1234! k8 }3 M6 H, I# m% }, ]* x+ b
Mdx制作流程: https://www.pdawiki.com/forum/thread-9440-1-1.html  S5 T& J* V! h: O0 |

: c- E+ h% ~& b9. 发哥
  s8 ^! v& e8 ]1 M/ Z[英-英] ◆Dictionary of American Slang and Colloquial Expressions【20081222】:https://www.pdawiki.com/forum/fo ... ighlight=pdf%2Bword 8楼有pdf到html的经验。
: `  H1 b* H5 e; ^  z$ x8 M# L. B$ H( H3 G6 M9 m* Y9 P7 x
10. FHYVUCBRUG 9 z% L, E1 B7 h: j4 V3 P5 A
https://www.pdawiki.com/forum/thread-10617-9-1.html 第219、220、222、224楼。网盘有ConvToSpx.py1 V! M. j8 A9 n- q
3 ~* g0 @* S! P  S. j8 K  u
11. 手把手教你转换辞典2 R" @, J7 q9 A& j/ j) A6 `
http://bbs.emagic.org.cn/forum.p ... ntable&tid=52785 g. g# w7 w, {& g  A  P; s
http://www31.ocn.ne.jp/~h_ishida/scripts.html3 r  F- [: G+ o( h9 T+ n
3 x1 K; t4 X" v2 A: d& Y

4 E* @* b- n4 d" ?$ q. _; ~--1 D1 s( d- m  g7 [+ v2 y3 M' y! K
http://blog.yeshj.com/luodean/& d/ z1 Q2 f4 [, F% ~; r7 `4 V( R! X
老马的原创空间:http://www.comicer.com/stronghorse/index.htm4 P8 D' z. S, N, ]; F& Z
---( q9 \6 p6 k; T; j9 B: l/ K
1.  Ultra Edit中如何删除包含特定内容的行?
! k8 S9 G5 t7 i2 ]2 Q$ d; C
如某文件中有些行含有特定内容PTTAddress: E3 e0 ^. l0 I/ [
a. 使用替换功能,勾选正则表达式(Regular Expressions),替换内容为%*PTTAddress*^p,替换为为空;
) E  X2 l; N6 L! b+ h9 Wb. 删除空行,使用替换功能,替换内容为^r^n^r^n,替换为为^r^n;
6 I9 i# p8 U8 f8 c: va. 使用搜索功能,勾选列出所含内容的行(List Lines Containing Characters),搜索内容为PTTAddress;
) ^  U8 w" u' ]% W9 G# ^. yb. 在搜索结果中选择拷贝到粘贴板;: i3 [, \+ T- `% c( |: V0 v/ [
c. 新建一空白文件,然后ctrl+v。

- a. T9 y7 S; d0 S, d8 c' E; o& e+ \* {5 ^+ x( ^* e
2. 使用wget如何登录后再下载
( q6 U* D4 P" m$ a' o! b$ T1 X' `http://tilt.lib.tsinghua.edu.cn/node/213
/ d6 @$ Z# w2 a* ?9 ]
6 x6 y' B! B/ Y5 T. v3. 如何批量修改文件后缀名?# N4 N" C: }  ^8 m6 P
http://zhidao.baidu.com/question/423790075.html! f5 @+ `1 ~0 ]8 A- K' k& A) v
% s- n8 Z6 M$ K3 a1 D
4. 如何把多个文本文档合并成一个7 C  G( I$ d$ c+ H' [
http://zhidao.baidu.com/question/172524472.html8 }: b. \" j" p1 [
9 o  f6 \: j% ~$ a' |
5. EPWING转txt5 x, [4 z! w( b
http://coffeejp.com/bbs/thread-170502-1-1.html
: r9 A1 E. B. E" Z另:数千部日文小说和EBwin字典网盘分享 http://www.douban.com/group/topic/26642847/
) u/ }- r; h0 O. a8 Z( r1 zhttp://www.coffeejp.com/bbs/forum-22-1.html0 U0 D2 ~: @! h+ _& P0 O' X
4 a: q% A8 ?) C6 w- Q% }
6. bgl2StarDict0 V1 h3 W  R. q  F: A/ q( h7 _
http://code.google.com/p/stardict-3/wiki/ConvertBabylon
5 p1 i. S. P/ |/ J6 x& t0 X) [7 N# Q
7. Lingoes灵格斯电子词典LD2(LDF)文件单词提取器7 |$ n# L1 m  O2 z- L. i
http://code.google.com/p/lingoes-extractor/
: e  W# r9 p" u4 I$ e2 k-
# Q: Z! z1 a% dhttps://github.com/windylea/lingoes-converter6 V; B3 @, w! G

8 O: V' i8 J( }8. lsd 2 dsl
# p* v, D- V0 b. l0 H# C3 Y  P4 Qhttp://alabaxblog.info/2013/02/lsd-to-dsl-mass/* c% Z5 k9 g- D% P0 E
http://www.windylea.com/blog/201 ... or-abbyy-lingvo-x5/
0 F: I7 N6 a+ k' ^7 S
# f; n! X; e* Y4 I9. An Analysis of MDX/MDD File Format+ ~3 b$ e5 L5 p
https://bitbucket.org/xwang/mdict-analysis9 M/ ~+ {7 G' L8 [
http://m.newsmth.net/article/LinuxDev/56948?p=1+ K; E. _7 F" X
http://mdict.codeplex.com/. `8 n, l' `3 G" m

- D" ~* i. Z5 k) I; s8 a; f7 r10. ; Q- S( b6 D8 F% y4 W& ^
http://hanzisearcher.cnblogs.com/; f* P. v/ n  w* C( n

" l6 x1 z( ?2 R  q3 M. _9 N! ~0 q- C11. RegEx Dotext 1.0: x& x9 Q& z3 N4 r
mdx制作必备:RegEx Dotext 1.0,可合并词条,提取信息等
6 m) ~1 O: w* N+ S$ S4 Qhttps://pdawiki.com/forum/thread-11430-1-1.html
5 |% ^* J9 Y/ B$ ~
% c& O" @" c  o: p$ \12. awk+wget实现批下载
: n7 Y; I" n% V9 s3 }* ohttp://blog.sina.com.cn/s/blog_4a1f59bf0100nifm.html* H1 _( M: X' }  T

, g8 p" f, S1 `& S. M0 F# k13. 【awk学习】gawk+wget+grep写的小爬虫
% ^( i, {" Z  y* \' u& Y$ c9 R* Yhttp://bbs.byr.cn/#!article/Linux/104263
! R: l! n+ D, a1 U* c$ b
: y/ r3 a0 J0 f, z% V14. wget批量下载文件后,如何重命名!; w5 L9 @* @; Y1 j
http://www.linuxsir.org/bbs/thread321272.html& s, C- A; V. m; c, b2 F
  z5 m* B1 U; _5 \& v7 n
15. http://www.regexlab.com/
+ |) I+ |$ V- O9 ?2 e% z9 T$ b  ~  A5 S2 V. I% i2 b  o% A' x
16. EBDump9 j- @4 A3 g# X; w* Y' d
http://www31.ocn.ne.jp/~h_ishida/EBDump.html, e- [' f2 y3 c, J
http://www31.ocn.ne.jp/~h_ishida/EBDump/EBDump.html
8 Y* }7 @$ _0 @  O! ~2 G' K8 X
* C, `. _3 p5 i) F- D17. Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup)
1 ?  S, @0 `" K2 _http://www.360doc.com/content/13/0929/20/11729272_318036381.shtml0 s1 x" l3 A( y$ i3 p! s7 O
* `6 V) X; [# g+ U+ y9 k* D2 ?
18. [转]用python爬虫抓站的一些技巧总结
' |' ~2 q6 b2 i! o8 m6 Shttp://hi.baidu.com/txcbg/item/9b10b9562c275b9408be176a
( C2 p! y. ]) [7 D5 k7 F8 R2 H
! Y9 @' F) R5 N% Y3 t19. Python爬虫入门教程
1 @1 ^5 F2 e- @" b3 Phttp://blog.csdn.net/column/details/why-bug.html+ {6 ~% `8 \6 H

0 l  H; ^% A2 [- A=========
6 G: {0 j+ S8 ^3 v  n" J7 dEPWING相关:+ r$ h+ B6 Y6 ?! [  s
http://hp.vector.co.jp/authors/VA021723/dessed/
. \6 p4 Q6 q: o* U$ d$ E5 }# H. M
8 L+ u4 y; Q/ c; B) ~0 V$ }- l

评分

2

查看全部评分

本帖被以下淘专辑推荐:

该用户从未签到

发表于 2014-6-2 11:26:50 | 显示全部楼层
本帖最后由 meigen 于 2014-10-7 01:45 编辑 " g* \- V+ y- B
* ?5 d2 l' b' i3 X6 {! U$ M/ K
提取Epwing词典图片的java代码
/ u- D( \4 b8 e* V5 xEpwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两种图片格式不同需要分别分析
) ~1 w: G9 ~. G8 T& G7 i首先是彩图* @0 Y3 J/ G) d4 Q8 E
格式说明:每张图片以“data”(64 61 74 61)为起点标志,data后面四位是该图片的数据大小,比如“6B E3 00 00”表示这个图片大小是58219字节;后面是数据部分,要提取的内容就是这个% s9 ?/ F" H9 i: P. d/ g. h
提取有两种情况,一种是先用ebDump导出txt格式,然后用txt来提取,一种是直接用HONMON文件提取,省去了中间步骤* t8 J  C0 c2 E' R& ]  g
先介绍用ebdump导出txt格式然后提取彩图
2 t% O/ ^+ h; q  F. v
  1. final static char[] DIGITS = {
    ' l/ v' p, C' {5 [3 ~
  2.     '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' ,) W1 l0 t4 L" u! x% I7 V
  3.     '8' , '9' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F'
      z2 k8 D# `& {# Y* Y
  4. };
    " a  S7 t# M4 B( T* q
  5. public static String toHex(int i) {
    3 ~) H& X/ v5 u+ N$ }: r" P  @- O; ?
  6.         char[] buf = {'0', '0', '0', '0', '0', '0', '0', '0'};! v: q. \2 o$ U9 g- n5 n
  7.         int charPos = 8;
    ( m7 c, @3 M" Y1 E$ g6 X* m5 Q
  8.         int mask = 0xf;
    ( @1 N9 p3 c7 p; F; V3 x
  9.         do {
    : g( m' f4 J0 U; b, @, n* R5 U
  10.             buf[--charPos] = digits[i & mask];
    3 ^! b8 Z. i4 C; o' o9 i
  11.             i >>>= 4;0 J) q% Q, Y  o8 Z1 ^# u% @4 p
  12.         } while (i != 0);1 U. r2 d7 v& u2 W+ v4 h
  13.         if(charPos > 4) charPos = 4;( q, V" b( R# k  c+ f4 ^6 \" z5 i1 }
  14.         return new String(buf, charPos, (8 - charPos));
    7 y; `& V# [1 B# |
  15. }5 ~6 o' @* q) N! S$ O2 ^
  16. static void getColorPic(String f, String path) {
    1 @- t) V0 X+ a, ~: x4 W" t9 f
  17.     try {9 b% ?9 h' a- a& }7 N( |. {. l6 M
  18.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f), "Shift_JIS"));% [" d. i% N7 B1 J) I/ V
  19.         OutputStream out = null;
    6 F: G4 @5 y4 O, c5 B
  20.         String line = "";2 k  A+ b0 f4 ~' j0 T- i
  21.         String block = "";
    2 k9 t) m# R! p" F. D& l5 B
  22.         byte[] bs = new byte[2048];: z" }) ~7 B( [- s" V! F
  23.         int idx = 0;
    5 N0 h- |" s. S
  24.         if (!path.endsWith("/")) path += "/";
    7 \; q2 ?  ^( V
  25.         File fl = new File(path);1 t8 n6 q: L  S  k) u
  26.         if(!fl.exists()) fl.mkdirs();+ k! W" G* |' r8 O7 a
  27.         while (((line = reader.readLine()) != null)) {
    * \4 {$ D9 t( t' g( K
  28.             if (line.startsWith("block")) {$ E$ v& ?5 z9 Q3 C% e- I" P
  29.                 block = line.substring(6, line.indexOf("("));
    0 I% [% p( Z3 v9 k1 m$ d, x
  30.                 System.out.println(block);7 M8 \, Q0 A+ T
  31.                 idx = 0;) g8 e- H2 V$ l6 L9 m# _1 u! V" P
  32.             }
    : r) z2 d, |5 G& K) O
  33.             if (line.startsWith("0")) {
    3 K% N% F* D) \- W7 K: e/ S+ f
  34.                 for(int i=0; i<16; i++) {( b6 K1 |# g0 ~! I
  35.                     int a = CHARS.indexOf(line.charAt(5+3*i));
    3 O" r8 |' I( Q
  36.                     int b = CHARS.indexOf(line.charAt(6+3*i));
    1 V4 K! e' O- l* n
  37.                     bs[idx++] = (byte) (a << 4 | b);
    # P! H5 I& U. i: x1 d
  38.                 }8 H3 X/ H0 a& \+ k9 u
  39.             }
    # I/ b# `+ k+ m& g- I
  40.             int dts = -1;' f2 a, L+ E7 a  p; r
  41.             int ws = 0;2 y; F, O! G; x, I% U
  42.             if (idx == 2048) {
    ! T: c$ a+ i! _0 T
  43.                 for (int i=0; i<2044; i++) {
    $ Q8 S$ q! U7 ?+ a2 n9 H
  44.                     if (bs[i]==0x64 && bs[i+1]==0x61 && bs[i+2]==0x74 && bs[i+3]==0x61) {
    4 G) n$ d! Q2 s4 o3 X: n
  45.                         dts = i;0 h! j1 [5 |0 O5 m4 ~
  46.                     }' R) n9 q7 {0 O8 D2 ~! T0 E
  47.                 }* A1 t* w* K8 r
  48.                 if (dts != -1) {6 }) t9 x  G' G% U
  49.                     if (out != null) {
    $ S6 J2 _% T$ W9 p$ |
  50.                         out.write(bs, 0, dts);  I% p/ i- y7 e, B4 G
  51.                         out.flush();
    ! ]! g4 @$ ^6 d/ Z) I& T% m; b
  52.                         out.close();
    , p) g; B2 P3 u9 k( @' p* e
  53.                     }6 l% }6 j9 D) N5 E: ]; b
  54.                     out = new BufferedOutputStream(new FileOutputStream(path+block+toHex(dts)+".bmp"));
      P4 E5 e; ?0 J3 D" D0 c. E4 b
  55.                     if(dts > 2040) ws = dts-2040;
    6 B3 c8 {8 H9 i& V, @. X& R, |
  56.                     else out.write(bs, dts + 8, 2040 - dts);# q. q! }- u- Z& |" F
  57.                 } else if (out != null) out.write(bs, ws, 2048 - ws);8 V; b) h# H7 |* I
  58.                 idx = 0;
    # t" A2 X8 \. k7 N) h( H; H, J( u
  59.             }
    5 r2 q* s$ S1 t( m
  60.         }
    6 C, T" T! r2 K. ^3 W; u, j/ f
  61.         reader.close();# E, J. d* h* z, r
  62.         if (out != null) {- Y' j- j0 i( M3 q
  63.             out.flush();
    " j/ g8 d! e+ O+ c9 {" n
  64.             out.close();
    + D+ h& W/ s9 U8 C' j
  65.         }
    ) i0 N9 H& c; ^8 I
  66.     } catch (Exception e) {
    * w, b- N5 v* t& }6 C8 q3 ]+ I
  67.         e.printStackTrace();
    # {5 ^( ?) F5 |% K% w1 s. N/ P4 E
  68.     }" O0 U9 Q' m8 s8 J2 T( d
  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 编辑
6 R% h( x5 }: ]& p9 _+ U1 k
# H( `3 x6 m% Z- L接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情, j' d4 i$ B2 |" h# ?* _
先用ebdump提取出词典文本(本文),然后在里面获取单色图的代码(<1F44>开头,<1F64>结尾). }1 z& t2 N1 b" A. ?+ @
可以看到0 G' S9 y, W8 z/ a4 L4 `
<1F44><0001><w=200,h=256>xxx<1F64>[0001A4BD:0027]+ C9 P" L1 t" q4 d' g6 ~
这里的w=200,h=256表示图片的尺寸,这个参数后面会用到
0 |# x! H9 }" o然后<1F64>后面的这一段[0001A4BD:0027]就是单色图数据地址了1 M8 ^1 |& g' O  b
先写个Demo 把所有地址都提取出来,顺便排一下序,去掉重复:$ I3 x9 n# v* e; w% d
  1. static void getMonoTag(String f) {
    ) C0 Z, S/ E9 B" F
  2.     try {0 V& `3 a$ k- t9 i9 q4 u& x
  3.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));
    / ?$ i1 f9 f. i0 v6 i
  4.         BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f+".mono.txt"), "UTF-8"));
    ! U$ D& \; P" X8 F0 i% ]
  5.         String line;7 @: k; L* J* y4 i8 y3 k
  6.         ArrayList<String> monos = new ArrayList<String>();
    & x3 B. e5 ?" S, P+ L9 k
  7.         while (((line = reader.readLine()) != null)) {/ l% A3 W7 D4 c$ Y! H
  8.             while (line.contains("<1F64>")) {" B# s2 J1 L' `0 `
  9.                 line = line.substring(line.indexOf("<1F64>") + 6);
    4 s7 ]: v  w( L1 ]8 ^, _& E
  10.                 monos.add(line.substring(0, 15));
    ( S, D) @3 |% L  U0 w
  11.             }6 W* t+ q5 p% \, Z0 O! Q4 x3 Y
  12.         }5 X& \' O- V# P2 l6 Y, d2 s1 q
  13.         reader.close();. c/ K- U! f7 `- I0 g" y
  14.         String[] monoa = new String[monos.size()];) i6 _! Y' S. o# U
  15.         monos.toArray(monoa);2 n8 j3 h1 R. v8 K
  16.         Arrays.sort(monoa);8 \. b0 o# `2 y! o- C: z/ M- D
  17.         String last = "";5 k3 d# `( B1 c" x
  18.         for (int i=0; i<monoa.length; i++) {
    # h  Z7 I, s- K
  19.             if (!monoa[i].equals(last))
    8 m1 r: u9 D1 D( R
  20.                 writer.write(monoa[i] + "\r\n");
    9 U% Y' \& M' u
  21.             last = monoa[i];
    4 `* S( m$ N- T3 \# i. F$ o' \
  22.         }. a1 G1 v* G8 x  W1 ^! e' I
  23.         writer.close();
    5 ], F6 H2 Q3 D0 R5 ^8 d) ^
  24.     } catch (Exception e) {
      }2 L) M$ r7 t( l2 w2 f
  25.         e.printStackTrace();
    ! c$ z2 b0 L1 r" B" Z
  26.     }* b% q3 v" z" N1 h3 q8 a9 ^
  27. }
复制代码

% J# A. G6 t* j  r2 u$ D& k2 ]得到了一个.mono.txt的文件
1 N# q) [2 M7 N然后开始提取:
3 o5 u; k4 {5 i) S$ ?' A上面有提到w=200,h=256这两个参数,不过epwing好像弄反了,200是高,256是宽。 - -/ h- W3 J' h0 ~: P
提取过程中需要手动加上图像的文件头,可自行百度bmp文件格式+ g* X; s& W: a$ _) J' R4 q( `
  1. static final int WIDTH = 256;
    , n: u. v2 ^; r% E
  2. static final int HEIGHT = 200;
    / N9 G5 s$ i- [' s2 `0 p
  3. static final int WIDTH2 = 32;
    4 L  L3 G0 m$ ?& C+ v
  4. static final int SIZE = WIDTH2 * HEIGHT;+ A0 j8 m2 n: I8 @; p
  5. static final int FILE_LEN = SIZE + 62;# X7 W' F) i" |0 l) T
  6. static byte[] filehead = {0x42, 0x4d,
    ( ^' C- {5 A* |' Z& [# r; Q
  7.     (byte) (FILE_LEN & 0xff), (byte) ((FILE_LEN >> 8) & 0xff), (byte) ((FILE_LEN >> 16) & 0xff), (byte) ((FILE_LEN >> 24) & 0xff),; h/ c2 e) k/ O0 D8 M
  8.     0, 0, 0, 0, 0x3e, 0, 0, 0};+ K: I! |  K5 ]7 v/ S% K7 a% w' m
  9. static byte[] infohead = {0x28, 0, 0, 0,( B# q" p! P: u' a, O
  10.     (byte) (WIDTH & 0xff), (byte) ((WIDTH >> 8) & 0xff), (byte) ((WIDTH >> 16) & 0xff), (byte) ((WIDTH >> 24) & 0xff),: k1 ^- O1 _! L% f' e/ [* D& k
  11.     (byte) (HEIGHT & 0xff), (byte) ((HEIGHT >> 8) & 0xff), (byte) ((HEIGHT >> 16) & 0xff), (byte) ((HEIGHT >> 24) & 0xff),
    ! W+ [! ?9 _4 ]# w- h$ S
  12.     1, 0, 1, 0, 0, 0, 0, 0,0 i- U8 y) f% ^8 q- `1 m
  13.     (byte) (SIZE & 0xff), (byte) ((SIZE >> 8) & 0xff), (byte) ((SIZE >> 16) & 0xff), (byte) ((SIZE >> 24) & 0xff),4 h2 ~+ N% O4 c/ S! H
  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};  W' B6 ~( g) ?9 I3 O) @* r
  15. static void getMonoPic(String f, String m) {0 ^9 l) B1 b3 U
  16.     try {6 D9 m. c2 R$ H% W# j. O
  17.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));
      H& x5 I! R8 e1 ]
  18.         BufferedReader reader2 = new BufferedReader(new InputStreamReader(new FileInputStream(m+".txt"), "UTF-8"));
    # M# ^7 T, i$ w
  19.         OutputStream out = null;
    5 ^* k& _7 r9 y: k
  20.         String line = "";8 r. i3 d, B" P% G
  21.         String line2 = reader2.readLine();( C) Q* C  k& ]1 Q! t
  22.         int block = 0;
    1 x  c/ h) E. R6 g9 ~0 V3 y
  23.         int block2 = Integer.parseInt(line2.substring(1, 9), 16);2 Y, ~1 [0 ?" K+ c! z
  24.         int offs = Integer.parseInt(line2.substring(10, 14), 16);6 T! k' ?( K8 r2 @  t
  25.         byte[] temp = new byte[2048];
      k* h7 e1 \1 ?+ ?3 x6 d# O6 @* d
  26.         byte[] data = new byte[WIDTH2 * HEIGHT];4 Y8 |- ?1 f# w7 h3 `+ |
  27.         int[] idxs = new int[WIDTH2 * HEIGHT];, b' T5 m) F5 M8 ^8 k* `
  28.         for (int i=0; i<HEIGHT; i++) {" |+ \" U" T3 i2 s0 |- ~& @% f
  29.             idxs[i * WIDTH2] = (HEIGHT - 1 - i) * WIDTH2;
      q0 S# j: A7 ^0 z) d- l; J
  30.             for (int j=1; j<WIDTH2; j++)
    " R; |; D1 n9 [' O4 K3 b, H
  31.                 idxs[i * WIDTH2 + j] = idxs[i * WIDTH2 + j - 1] + 1;4 R6 V' h# M* Y' ]7 q) U
  32.         }2 q+ T* F9 D+ k( ]9 Q  v! u
  33.         int idx = 0;
    ) A& {( K7 g. e  J  f3 S4 I
  34.         int didx = 0;. U" r- s! q+ d# w9 g( z
  35.         while (((line = reader.readLine()) != null)) {  I* P6 ]( @6 g4 e4 ?
  36.             if(line.startsWith("block")) {
    ) j* r5 k+ [* c: P/ }8 O
  37.                 block = Integer.parseInt(line.substring(6, 11), 16);
    2 t5 G# H" s4 ~( X0 J2 |
  38.                 idx = 0;
    7 P) \5 E, [2 O1 V2 J! V
  39.             }4 W3 f, T/ h+ Q6 @
  40.             if(line.startsWith("0")) {  h  U( q8 P" M! v
  41.                 for(int i=0; i<16; i++) {1 z: t9 c  D8 `- T; T. i; e
  42.                     int a = CHARS.indexOf(line.charAt(5+3*i));
    . |' U& u! f# J7 ]% c, k
  43.                     int b = CHARS.indexOf(line.charAt(6+3*i));' |* N1 e, ]4 @5 {/ @# s
  44.                     temp[idx++] = (byte) (a << 4 | b);3 J( \$ K( T9 D
  45.                 }" Q- h4 G4 o/ C3 E) Y* ^
  46.             }
    $ f- [: i, ~0 r1 L5 o- s2 w
  47.             if (idx == 2048) {) F8 E2 w4 g% W9 p
  48.                 if(block < block2) continue;
    4 a0 N- X/ E2 h+ F8 X
  49.                 int start = offs;) |0 u( l" s7 n9 E. d$ k0 s
  50.                 if(didx != 0) start = 0;. F% I" l4 b/ M' I! P( j7 S
  51.                 for(int i=0; i<2048; i++) {
    # m7 j5 [# F; i4 Q% K
  52.                     if(i >= start)
    * K- ~; Y: M" [: t5 G
  53.                         data[idxs[didx++]] = temp[i];" y6 w& Y2 j; D  \" b4 z0 H' b
  54.                     if(didx == WIDTH2 * HEIGHT) {
    0 Z" t0 v- W$ Z2 L0 S% L, s# P
  55.                         System.out.println(toHex(block2)+"."+toHex(offs));5 f: N  S" j" N& i- }4 n
  56.                         out = new BufferedOutputStream(new FileOutputStream("pic/"+toHex(block2)+toHex(offs)+".bmp"));, ^  e: \! i8 B- F% N0 p! `
  57.                         out.write(filehead);" N& A4 y! }4 L! C
  58.                         out.write(infohead);& v; }# }+ L- n( g* V! e! R: U4 v0 G4 q& V
  59.                         out.write(data);8 r0 e" n2 }; N) @3 w3 T9 o' I
  60.                         out.flush();
    " Y! B4 {: o0 \: D' Q- H
  61.                         out.close();
    , [& g4 B6 v, k! u& B- l7 z$ l
  62.                         line2 = reader2.readLine();  W) t8 R" q* D( ]' i( Y' j
  63.                         if(line2 == null || line2.equals("")) {
    ' q3 T" b2 F9 n+ h+ f* y- T1 c$ W
  64.                             reader.close();
    * Z) D  k* U$ z  D
  65.                             reader2.close();
    ( ~5 z, }) R7 Y0 T( {
  66.                             return;
    7 @' K7 r! e" Y8 {; c& T. {; F
  67.                         }
    : k, p8 n& j: e, ]0 \
  68.                         block2 = Integer.parseInt(line2.substring(1, 9), 16);
    6 B8 j9 L4 N  b$ }/ h2 V3 |
  69.                         offs = Integer.parseInt(line2.substring(10, 14), 16);
    4 G/ \7 i! y  h: W: a# k
  70.                         didx = 0;& s, Y# X, a& ^. \! y
  71.                     }
    ; I4 j" P6 x9 |' G: G
  72.                 }/ ?2 b8 L) k% B! A% O0 d* [
  73.                 idx = 0;: q9 L( u# o* U* K- s( D2 n
  74.             }' P4 s. w8 s! C: {4 c+ H
  75.         }
    * L- a) `7 n/ M; _6 R4 e& L) d
  76.         reader.close();3 i$ U4 X: X8 s' j
  77.         reader2.close();
    # z+ p9 q; g4 n2 O8 [, C  D
  78.     } catch (Exception e) {
    4 V9 |8 E# O8 U- ?: M: l3 A& Q
  79.         e.printStackTrace();8 K- q# \% y- f, L
  80.     }
    & ], i2 l$ f0 x( ~6 ~4 f
  81. }
复制代码

$ O( P& w( q  @: Z待编辑...: m" C* F% e8 Z8 x; E
9 W/ p/ b5 v3 X
回15楼:
! f. @( u4 F* g* X' J
能把代码用附件形式上传么?顺便使用说明用英文。

% P3 |- V/ m: U代码有一些要改动的地方, 我完善一下就传附件
2 K. v9 F3 P$ ?6 ~  R) P! I0 m" t7 j另外用英文说明这...{:11_336:}
6 R3 r* k2 f* r; u我先用中文注释一下, 然后再慢慢翻译

评分

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的每日心情
    擦汗
    2025-3-22 09:30
  • 签到天数: 21 天

    [LV.4]偶尔看看III

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

    该用户从未签到

     楼主| 发表于 2013-11-8 00:02:28 | 显示全部楼层
    高手们都歇了,或者对词典不感兴趣。% p( K8 v3 f: I3 U2 b8 C
    其实目前新的词典资源,主要集中在iOS、Android应用上,一些数据dat啊,db啊,都有加密,要破解啊,技术含量很高噢。
    4 h  I' A3 q* U" _, r+ `-
    " D% |7 m4 ^+ w& d$ t' j一些扫描的词典,要做成pdf,基本就只有靠神人出手了。网络合作校对或录入?我从来不觉得这事儿靠谱,志同道合的、对同一语种同一词典感兴趣的人太少太少。慢慢等吧。{:5_214:}
    - Q! v8 B! y% ~" }3 N  M

    该用户从未签到

    发表于 2013-11-11 10:58:55 | 显示全部楼层
    一直想制作啊,太复杂了,文科生一枚,看得我头晕。
    : e/ a! @0 D4 h" C1 X  J# \% y其实我只是想制作一个自己个人的词典,因为自己从事英语教学,有些单词讲解有自己的方式,要是加进去,以后备课就方便了。
  • TA的每日心情
    难过
    2023-11-26 08:44
  • 签到天数: 49 天

    [LV.5]常住居民I

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

    该用户从未签到

    发表于 2014-2-18 10:51:18 来自手机 | 显示全部楼层
    这个很赞!
    0 f! _0 ]- K+ M9 H! C, [最近打算扒维基来着。

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2014-6-2 14:18:15 | 显示全部楼层
    meigen 发表于 2014-6-2 11:26
    1 V$ P, k; A6 A8 s提取Epwing词典图片的java代码! p0 Y* Q! M" `( _) k+ y5 }
    Epwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两 ...
    ' d6 U6 W: L: J$ |
    {:5_227:}
    4 u1 K& l4 X* g+ `5 \2 V" z% ^- A" Y! n1 B5 q$ a1 g/ ~5 b4 [1 ]
    论坛用了防转载插件还是什么的,复制代码的时候后边会加上一堆乱码。0 w# q# |6 [! w- V& I% N
    能把代码用附件形式上传么?顺便使用说明用英文。( [" N, o! i& `. k$ Q5 C( E
    辛苦辛苦~
    ; f9 T2 N. H, ?% I+ T  e) ~( v) c5 q

    该用户从未签到

     楼主| 发表于 2014-6-2 19:29:10 | 显示全部楼层
    本帖最后由 Oeasy 于 2014-6-2 19:31 编辑
    + p- b5 G' b  C" F( Q* m* `0 H+ L/ [
    meigen 发表于 2014-6-2 17:03
    7 t2 U% k5 k0 G) T% V" t接14楼, 单色图的提取稍微麻烦些, 他里面只有数据部分而缺少文件头, 这个是比较头疼的事情
    7 i3 H: b# a5 j/ `( Q/ u我们可以先到词 ...
    4 A8 L+ f1 ~* |; K

    ! G, R( h% U: G1 a{:10_240:}
    ! w; v8 ~$ c3 N* R0 D
    3 f, s9 l. B# \; }( ~+ l。。。。
    * d' l7 Q  g5 Q) f- n3 a3 G( [其实GoldenDict支持EPWING了,尚稍有瑕疵,但已然近乎完美,不敢要求更多,感谢Abs62大神。
    9 Q0 c% b% H, G* D$ Y! M1 j3 ]http://goldendict.org/forum/viewtopic.php?f=4&t=2922
    ! e0 w9 s% k# P5 \8 {/ Zhttp://goldendict.org/forum/view ... =2091&start=3000 @$ G6 l. l  e& y  E
    不过能把EPWING转出文本 & 图片,制作为dsl、mdx等,进行个性化排版,这些啊,始终是让人愉悦和有成就感的事情。。。{:10_228:}
    3 L5 b1 N7 ^: h. o) \. I( e9 z# o$ I0 z  P, z$ v* D9 l- p

    该用户从未签到

    发表于 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++之流甩开几条街了。8 w* |+ V/ I: r8 n0 @1 \4 r! u1 y

    该用户从未签到

    发表于 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
    ( L6 d8 h6 p2 p- x% i( E接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情/ B" t7 f1 M; O$ s2 o
    先用ebdump提取 ...

    " y7 y5 Z( l% o好文,谢谢。

    该用户从未签到

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

    本版积分规则

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

    GMT+8, 2025-5-2 14:31 , Processed in 0.029853 second(s), 28 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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