掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 31484|回复: 45

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

  [复制链接]

该用户从未签到

发表于 2013-8-25 10:34:14 | 显示全部楼层 |阅读模式
本帖最后由 Oeasy 于 2017-9-19 15:42 编辑
# p0 ~* O' N8 f% y% a6 d) f1 w
1 \$ ?4 r- \2 f/ ^, J& f  {' L  b& L6 _* g9 H: y
FAQ) I0 G6 H/ f2 S: Z/ k1 q1 U
>>  未加密的 mdx 如何转为txt?
. l/ r6 t* n& R# \8 k$ E工具①,GetDict.exe by yhssdl。下载地址:
  d; y6 m. h- c& ~. G, rhttp://pan.baidu.com/share/link? ... 67&uk=305151372
1 S9 q2 _' W* J. R- X8 _
, k8 F, P3 Z$ g* r>>- y5 O8 f; E4 ~! d8 k
[实例][解压mdx/mdd再打包为mdx/mdd][乱][多图]  https://www.pdawiki.com/forum/fo ... hread&tid=13388$ {- u2 \, P& d& Q( Y

5 r8 T. d& G. ]: A6 r# k+ Y9 k2 p) T8 ?+ U/ w/ u6 i* V
老马的原创空间 http://www.cnblogs.com/stronghorse/
" C3 C# y8 n. u' n! f/ c" G4 L. J

' H7 g$ Q( w; b# P* ybgl-> txt https://www.pdawiki.com/forum/fo ... &fromuid=147948
; l/ d8 T# G; G" ^/ L# r2 j, [' a' {' V  X

5 c- Q2 V; P; c$ r! |
3 o. r  f0 m) \& F
; ]  b4 ?. i& O' `
1 ^9 j$ n" p$ J5 E& w" T$ U3 o- H: p4 o! ]: a
整理中,欢迎补充
% H& t5 L% P8 Z+ N6 _( X4 Emdx制作非常简单,但是要获取源文件,或把词典做得很漂亮有的时候是需要下一番功夫的。: s4 ?, V/ d8 ~: E( j0 N" O: ?1 a, Z" L
正则表达式Regular Expression, html, xml, div+css,
! d+ a" V) h& m" S# v编码,尤其是汉字编码的一些知识,神马UTF, GBK, unicode。。。{:10_300:}
8 r& m. M2 A2 }/ E! A  V: d" l程序设计语言:
6 V2 Z9 b- T3 a+ C' ]Python;C++;! K( s' {, V. |& u- K( F" e2 Y4 W
Perl
6 X1 q; v( R, C0 N4 k- \5 v. P$ CJavaScript : http://www.w3school.com.cn/js/jsref_decodeURIComponent.asp: {' b' S4 F! a7 L
VBS/VBA0 t3 J1 ~, U+ u  |8 i& |2 ^8 \
http://www31.ocn.ne.jp/~h_ishida/scripts.html
; {: r( C5 g6 l7 _- q  \+ x数据库软件:* q( l: O' w+ T
Navicat Premium8 J3 Q1 K$ z) J  x
SQLiteSpy,PowerBuilder
& h: D9 m3 j$ j, ^5 z, CSQLite Expert Professional
" ]8 \7 r) W1 a/ f软件:
' ~8 j5 {9 s+ [MDict,MdxBuilder: http://www.octopus-studio.com/download.cn.htm  f) _) o) H. G1 i  y! ^

& Y, g  k" y+ A文本编辑器类:Notepad, Notepad++, EmEditor, UltraEdit, EditPlus,
/ u# `; T2 j3 {6 GReplace Pioneer http://zhidao.baidu.com/link?url ... KEcUNfmzOo7nLH8BSNq& v( ~; }. ?: Z2 ?
Raptor 3 http://softfie.com/software/hacktool-raptor.html# {& g( J2 Z3 p/ P( v" F; o
awk 4 Windows :http://sourceforge.net/projects/ ... -1-bin.zip/download
6 X7 |3 F# O, q7 z# G" L/ E6 P, k
' O9 g: ^4 a# @* }9 t. f1 FMicroft Office:Word, Excel, Access
1 k6 P. q; w) |Adobe: Adobe Director (某些光盘是用Macromedia软件做的,用这个可以提取语音),Adobe Acrobat Pro
( [$ D; s4 c' M) c: c+ m% ]1 G/ u% mOCR:ABBYY FineReader+ @! g. Y/ l& p' Q9 E, C
DWS: Tlex
+ f3 t& U2 w/ d9 ?* l+ |9 x浏览器:Firefox, Chrome1 R( T0 |. K3 L; @& m

& @+ ]* ~. b. I9 B# p  Y$ ]4 I解压缩软件; N8 U8 Q$ C' J' G9 e
. I4 M9 T2 }' B( I7 a" f

  U0 }9 Y$ _# `离线下载类:; j% t4 B/ o, N( B
wget, Teleport Pro, OfflineExplorer+ u2 x0 a( C. k
其他
& M/ f& M! o$ f; y3 R% r( T8 DFiddler 2, ' _/ U/ W0 M. W5 z3 m- n% Q
SQLiteSpy. H; w' g6 b; I% ^. }' c# k
yhssdl的GetDict2.6$ Y. A, A( K4 ~$ y! T
AudioTranscoder  O1 c, z* A, S  ]
按键精灵  e* l1 w( p$ B' O  S
Tvangeste / dictzip-win322 q7 G# H$ p; C+ V2 G9 Z
https://github.com/Tvangeste/dictzip-win32/releases/) k! c6 }4 ]- l, K! T: h4 P1 G

9 k7 @' q. d/ @: @! [5 X8 D0 k( Fdsl相关软件:( a# c7 k- J3 J; f! H$ V
DSLGD6 b2 H. E3 D+ ~
$ c" i9 ^0 C/ ]$ Y4 S4 H
有参考价值的技术(讨论)贴:
+ T# ^- t5 R$ ~, L4 _0. superfan89
3 ?0 j1 }( B8 e' n  a8 C: G[英汉-汉英] 21世纪大英汉词典&新汉英大词典【11/8/1更新】: https://www.pdawiki.com/forum/thread-7022-1-1.html, 帖子附件有ydDumper源代码
& t6 }  o4 o# E- J0 Chttps://github.com/superfan89/IDMSKconv IDMSKconv源码
( e& u- B1 L  C5 K" [1 t4 k; shttp://dicwizard.jp/jamming_ug.html
2 L8 Y1 p1 V6 [% \+ n+ q) _https://www.pdawiki.com/forum/fo ... ctionary&page=3 63楼2 {# ]  J' O' g& q5 |4 j* b
6 `0 U. e/ i/ x4 W
1. chigre# U4 c: f; s9 f4 _
【直播完成】一个在线词典的离线MDX化制作[2012-11-29]:https://www.pdawiki.com/forum/thread-10260-1-1.html
9 Y) n+ Y' l+ Q0 H3 k: S$ l) R各种格式词典数据转TXT文本的工具软件(.BGL .LSD .LD2 .MDX STARDICT) https://www.pdawiki.com/forum/thread-10267-1-1.html2 s) Q& [) {& X& O
[其他语种] Z意汉汉意词典转制效果: https://www.pdawiki.com/forum/thread-10796-1-1.html
/ e1 H$ s. ]( d8 a! K8 ]9 {* o7 Z7 L# Y3 y+ i$ X
2. Hugh$ I+ ?; {" H) d
【图文】手把手教你[转换]+[排版] MDX格式词库: https://www.pdawiki.com/forum/thread-10689-1-1.html
- W3 M# K/ k/ h4 j! I8 p; n6 ]" ]  n
3. ldlcau
9 D$ E1 |' t' o# a# C4 Q& I! Z( Cmdict版制作方法和常用工具: https://www.pdawiki.com/forum/thread-899-1-1.html0 D) B9 N/ k2 L% O# C% Y! C

2 j" d& a5 `" z# C4. Oeasy2 e1 |# J4 e. w- F1 `4 X
【2013.07.06】如何利用Microsoft Word排版制作.mdx? : https://www.pdawiki.com/forum/thread-10801-1-1.html* b9 p: h! M& V, o9 O& x

* j' z9 V3 H0 p1 [; p5 B& X5. jjcizi" Z/ ]$ W2 P* W! n) q- b
[BlueDict] 一种把Excel转换为MDX的方法: https://www.pdawiki.com/forum/thread-9600-1-1.html
' I* w" s; n# D( [7 B
$ g1 `  b9 ~6 e" n/ G4 q, E6. sunsmile23. |; }) ~! j6 |+ }; o' P
汉英词典的汉字显示问题: https://www.pdawiki.com/forum/thread-10809-1-1.html6 \' _0 D! }. r6 O* g
vba如何正确地输出UTF-8编码文件: https://www.pdawiki.com/forum/thread-10832-1-1.html/ ^' M+ N  ~* l0 F
: z9 w8 t& V& l
7. sjn01
: O! F' K1 \: v* W" t  w求助,能否将Collins COBUILD 高阶英汉词典做成MDX?:https://www.pdawiki.com/forum/thread-6626-1-1.html) Y3 j1 q+ Y5 k6 m

. J/ ?& C5 Q( E% m% A  E  o8. 惟吾无为: E6 F. L$ D0 S9 B  ]+ t) t
linux下制作离线百度百科的思路(含成品): https://www.pdawiki.com/forum/thread-9256-1-1.html
! L) W" y, ~% E  P& h' u# ]; E7 z$ C# A! }
9. freegut! ?" h, i& G0 Q' b7 m
分享Lingvo到MDict的转换经验: https://www.pdawiki.com/forum/thread-5386-1-1.html
$ {6 S. ?" m) u/ f% ^) e2 k# Z4 r% d8 Z/ D
8. zhu1234
0 X7 ~* s* j$ Q  i, ?' OMdx制作流程: https://www.pdawiki.com/forum/thread-9440-1-1.html
+ o1 |& i+ D$ _3 @/ J( P; ?9 }3 c5 v, o% s: Y
9. 发哥! t( ^5 ]& x# ~' i+ G; z5 C5 w6 x7 `
[英-英] ◆Dictionary of American Slang and Colloquial Expressions【20081222】:https://www.pdawiki.com/forum/fo ... ighlight=pdf%2Bword 8楼有pdf到html的经验。
# ^7 i8 Z' e! i8 N& a6 n
  v; m- {1 H2 z8 i. X9 q10. FHYVUCBRUG 8 W+ o: s7 [3 ]4 j4 ]+ @) H
https://www.pdawiki.com/forum/thread-10617-9-1.html 第219、220、222、224楼。网盘有ConvToSpx.py! _6 o! q% R, c; v

9 Q8 ~( ^( S' f. D5 k1 t1 D11. 手把手教你转换辞典
: b7 V$ ~  p" F. g$ Mhttp://bbs.emagic.org.cn/forum.p ... ntable&tid=52788 E5 d! ?: r( l" c5 G2 p
http://www31.ocn.ne.jp/~h_ishida/scripts.html5 m/ Y' \; [' B# Y' B, o: j8 m4 ^

6 ~+ R& D) e1 ~( G) ?% n8 a- V& Q1 p" H0 X4 Y$ \( ]* @4 [
--
$ }4 x# k6 t0 e  Y: K! Jhttp://blog.yeshj.com/luodean/
; w' t0 M3 [5 ]! c+ O老马的原创空间:http://www.comicer.com/stronghorse/index.htm( P. s- O6 a- M! F. z! j" J% u
---
6 ~+ X( C$ D* Y1 H: L" S( Z' z4 L: `1.  Ultra Edit中如何删除包含特定内容的行?
/ _: V' S& L+ w6 d: C
如某文件中有些行含有特定内容PTTAddress# v: H0 G6 @# m! T
a. 使用替换功能,勾选正则表达式(Regular Expressions),替换内容为%*PTTAddress*^p,替换为为空;' r7 |1 B1 L2 l6 R3 Y! d/ h& @
b. 删除空行,使用替换功能,替换内容为^r^n^r^n,替换为为^r^n;) H: G& W: b9 s+ h
a. 使用搜索功能,勾选列出所含内容的行(List Lines Containing Characters),搜索内容为PTTAddress;+ [% m  J# V0 k$ z# C& }' E
b. 在搜索结果中选择拷贝到粘贴板;
! t, b& p  e0 `  n  w* t, h& u" f9 Wc. 新建一空白文件,然后ctrl+v。

6 g( G$ M' d. F1 p: J4 p, n7 A9 x5 q, ]
2. 使用wget如何登录后再下载
1 {4 U6 |: P( zhttp://tilt.lib.tsinghua.edu.cn/node/213
8 F" e7 W0 F5 @3 k! K, D
* K3 Y* J5 O6 M9 F3. 如何批量修改文件后缀名?
) y6 R8 z9 O/ l# r' Dhttp://zhidao.baidu.com/question/423790075.html5 W, i- w- Q" T0 z# A$ C

2 z) H0 E; O% V* o: i4. 如何把多个文本文档合并成一个
- a) b2 q; O7 [* ]  Ihttp://zhidao.baidu.com/question/172524472.html4 R. A6 s! u9 x& w: h  O
0 ]; |& w6 k1 G  y* u3 t- u5 f  I
5. EPWING转txt
( g% t1 k: ~7 S' u0 J5 B' _- ]* d  P1 ahttp://coffeejp.com/bbs/thread-170502-1-1.html7 l: K; I2 z) D2 u' r; o  \4 {+ q2 p/ c
另:数千部日文小说和EBwin字典网盘分享 http://www.douban.com/group/topic/26642847/
' h- e0 i5 q- v( [0 a" E. hhttp://www.coffeejp.com/bbs/forum-22-1.html# O6 b/ ]" ?* [
  K( t" \: i& ]3 r& S
6. bgl2StarDict
& ]# ^! L5 d8 p8 D/ i  yhttp://code.google.com/p/stardict-3/wiki/ConvertBabylon
% A: T1 M7 G/ J' `3 R! v3 D9 i+ d$ t
5 O+ M# `* f8 `. u7. Lingoes灵格斯电子词典LD2(LDF)文件单词提取器
$ P# T  u7 h( y( khttp://code.google.com/p/lingoes-extractor/
- V' ]1 j7 [8 X-5 K9 S; o, p6 h, o
https://github.com/windylea/lingoes-converter
/ _3 Z) g& {$ \5 n4 c7 O! z& X8 D4 m  m4 P8 l, v1 b! Q
8. lsd 2 dsl
; j, @" ^+ J" q: shttp://alabaxblog.info/2013/02/lsd-to-dsl-mass/9 P9 g; y' _* s/ v
http://www.windylea.com/blog/201 ... or-abbyy-lingvo-x5/5 L* T0 i4 s( A( T
, W! S$ {! L5 \( @
9. An Analysis of MDX/MDD File Format3 i* z# k3 o* t1 A& p  F
https://bitbucket.org/xwang/mdict-analysis3 l+ a1 a; g) X5 N- d: I4 W# ~' ?
http://m.newsmth.net/article/LinuxDev/56948?p=1
" k/ X+ g; z: _- b7 Rhttp://mdict.codeplex.com/
8 q7 h: m. T$ F! _3 ?8 L9 a' V5 t2 }, O+ f3 h2 |- S
10.
9 c# e: S# A4 U) N8 chttp://hanzisearcher.cnblogs.com/
5 ?# z) |9 ~6 V. G: J, P% g: q9 w
( y; Q' w0 y( K1 I  V11. RegEx Dotext 1.04 E5 D9 ]- I- q* q" P. u
mdx制作必备:RegEx Dotext 1.0,可合并词条,提取信息等
/ }$ \! \' H: V2 x; Whttps://pdawiki.com/forum/thread-11430-1-1.html2 ?) P! q) b1 c& Z" B& K
( y5 e5 _: j& t9 B% s0 u  J' D+ i
12. awk+wget实现批下载
9 V+ S7 E; P% a4 n$ s& o3 z! hhttp://blog.sina.com.cn/s/blog_4a1f59bf0100nifm.html- T  \3 p9 x. Q+ \! F! c6 H* e

( v4 s3 o! S" j! Y13. 【awk学习】gawk+wget+grep写的小爬虫
+ ^' l0 K# h7 \  Jhttp://bbs.byr.cn/#!article/Linux/1042634 t' v7 J/ X5 K7 x; e& ~8 Y* I

, o1 u# W! f4 j14. wget批量下载文件后,如何重命名!# x& Y. S% N+ j2 O  ]
http://www.linuxsir.org/bbs/thread321272.html. m! m  r8 o/ v/ G1 t
* q. o# T9 a* P& r
15. http://www.regexlab.com/+ d0 a6 }; C* [

$ y5 ]1 C6 O$ Y16. EBDump
* h$ R! w- o6 xhttp://www31.ocn.ne.jp/~h_ishida/EBDump.html( }! E7 y( N8 w; h! h2 m
http://www31.ocn.ne.jp/~h_ishida/EBDump/EBDump.html5 u. I- c+ O& l* E$ X! t% w

/ y( [) d: h" [$ v9 |# g17. Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup): {5 q; y- r" l) D$ R# ]
http://www.360doc.com/content/13/0929/20/11729272_318036381.shtml. I, ~0 `3 _5 I
* n; }! h- G* U
18. [转]用python爬虫抓站的一些技巧总结3 e5 V$ i1 o0 w" w5 m! M3 v7 i
http://hi.baidu.com/txcbg/item/9b10b9562c275b9408be176a
8 I: N5 X8 {7 x' q$ Y( D, T
0 U. i+ L9 x' [2 i19. Python爬虫入门教程2 `# [. {! n9 }) [( N
http://blog.csdn.net/column/details/why-bug.html; K( [" T. z; |' Q" h' s
  e3 p2 C1 R# }$ t
=========% C! q$ t' s* o- ]$ [" Z" M0 g
EPWING相关:3 L( @: h- w! O9 J# |! o
http://hp.vector.co.jp/authors/VA021723/dessed/( j, P# L: U% v" K$ o9 @5 [' X

9 o* s  j. f9 v

评分

2

查看全部评分

本帖被以下淘专辑推荐:

该用户从未签到

发表于 2014-6-2 11:26:50 | 显示全部楼层
本帖最后由 meigen 于 2014-10-7 01:45 编辑
# o& ?( O- j, P! o/ x5 z' [$ b0 A! m$ X, |+ Z/ `
提取Epwing词典图片的java代码
( A, E% K7 j4 tEpwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两种图片格式不同需要分别分析' \3 ]2 ]6 {) {" J
首先是彩图# J: C5 ^) n  s/ N7 F. w
格式说明:每张图片以“data”(64 61 74 61)为起点标志,data后面四位是该图片的数据大小,比如“6B E3 00 00”表示这个图片大小是58219字节;后面是数据部分,要提取的内容就是这个
8 V) r8 }( w0 U# M' G( H. k& c提取有两种情况,一种是先用ebDump导出txt格式,然后用txt来提取,一种是直接用HONMON文件提取,省去了中间步骤
) _4 D& K7 V2 M% F先介绍用ebdump导出txt格式然后提取彩图2 E  C  @# B! A  Z# B9 U6 ^! K& l
  1. final static char[] DIGITS = {  O* h1 M5 C: A, }3 l
  2.     '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' ,
    2 O" H6 l" }: w) @7 a) k& V
  3.     '8' , '9' , 'A' , 'B' , 'C' , 'D' , 'E' , 'F'
    & W3 J% l  ?# h4 U/ I% t
  4. };
    ; {' o# q% @" T( G$ ]
  5. public static String toHex(int i) {
    ) ?2 @9 R( X8 ?
  6.         char[] buf = {'0', '0', '0', '0', '0', '0', '0', '0'};) i9 j2 h3 {( i! B2 n/ R* p
  7.         int charPos = 8;% ?0 n: h  \% c5 l% F; Z0 _, {
  8.         int mask = 0xf;
    3 _2 r6 w. A9 ~  _
  9.         do {! {( @5 R! I* `' |9 z
  10.             buf[--charPos] = digits[i & mask];, E2 c" D! }; q8 m) p# |4 f4 v
  11.             i >>>= 4;$ ^+ ^) o, ?9 d! i$ Y% x
  12.         } while (i != 0);
    . ]! N5 h2 S9 j8 o8 c  s- n
  13.         if(charPos > 4) charPos = 4;' D% B9 N- r2 T+ A* T
  14.         return new String(buf, charPos, (8 - charPos));' @0 I" I: f5 H+ G
  15. }
    ( l* @3 w1 \/ H1 e2 {- o1 P
  16. static void getColorPic(String f, String path) {. F* c, ^# C9 ?/ j  N0 @
  17.     try {
    3 r# t% g; E& X- M  p: z
  18.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f), "Shift_JIS"));' k1 ^+ C! f8 `4 a' C
  19.         OutputStream out = null;6 A4 F% m9 e* s  b6 C
  20.         String line = "";
      B6 l6 P7 d5 K+ M; T$ O) C  `
  21.         String block = "";
    " F! K6 Z2 E/ `0 R. `3 N
  22.         byte[] bs = new byte[2048];: t3 t; C/ n/ z$ {$ a1 a( g$ Q
  23.         int idx = 0;
    3 h4 M7 X7 E7 P8 G3 V$ }
  24.         if (!path.endsWith("/")) path += "/";3 U' ~4 ?% E) k3 E, ?! q
  25.         File fl = new File(path);
    5 v8 G0 i- q5 n
  26.         if(!fl.exists()) fl.mkdirs();7 P& k" S9 A, M$ n  q. D+ A
  27.         while (((line = reader.readLine()) != null)) {3 y3 Z7 p' {; n2 V' w
  28.             if (line.startsWith("block")) {) N; W; x& d" e) J
  29.                 block = line.substring(6, line.indexOf("("));
    6 q/ i( G+ a; U, N0 i  l
  30.                 System.out.println(block);
    + l$ Y; H/ M! P( B6 n1 \! p
  31.                 idx = 0;' ~4 J* d. N* Y
  32.             }
    & \' e3 r8 n- S2 p4 b; x- c6 n' S
  33.             if (line.startsWith("0")) {
    + ?9 S* q# R# h: m% y5 V6 V, \) \
  34.                 for(int i=0; i<16; i++) {
    % Z; S$ p7 R! m: r+ P* P: C
  35.                     int a = CHARS.indexOf(line.charAt(5+3*i));) R. |' {$ \6 L7 J$ `7 o4 E: U
  36.                     int b = CHARS.indexOf(line.charAt(6+3*i));
    7 J+ l$ i0 g& i9 v) H
  37.                     bs[idx++] = (byte) (a << 4 | b);
    # H3 U5 ?6 i; |9 e- V( R
  38.                 }  H: }6 Z+ v. o+ T+ v! E9 T) O* r
  39.             }# A: ]% k9 g- @4 ?
  40.             int dts = -1;
    . `2 |+ K% _, C6 M! n1 P
  41.             int ws = 0;8 a0 S# O( D# z
  42.             if (idx == 2048) {7 d0 h2 _! L7 ]" v
  43.                 for (int i=0; i<2044; i++) {+ R4 j2 u3 r0 D
  44.                     if (bs[i]==0x64 && bs[i+1]==0x61 && bs[i+2]==0x74 && bs[i+3]==0x61) {
    ( t# a1 J0 m3 I5 r0 d
  45.                         dts = i;
    , C) C  }. P! I. |/ W$ U
  46.                     }
    $ z3 }$ p- q. V% M
  47.                 }
    6 T* I8 L2 T" b7 I3 p* v/ l  }
  48.                 if (dts != -1) {. R4 \% y& O# r4 ]
  49.                     if (out != null) {
    5 U* S! z! V3 q% `  {; l/ V
  50.                         out.write(bs, 0, dts);3 j+ |; }; U( h- L
  51.                         out.flush();( Q5 }4 ^# f: `. w
  52.                         out.close();% N8 @- p1 n, g/ \& W
  53.                     }" Y1 \( @7 ]7 ^3 _4 K! G
  54.                     out = new BufferedOutputStream(new FileOutputStream(path+block+toHex(dts)+".bmp"));
    ; O$ s* W; G. r: H- |
  55.                     if(dts > 2040) ws = dts-2040;
    , V1 l, u$ _$ m' _, [" Z
  56.                     else out.write(bs, dts + 8, 2040 - dts);
    : d. L. Q/ z8 D( j1 O7 o
  57.                 } else if (out != null) out.write(bs, ws, 2048 - ws);
      U6 z1 ^8 b7 L9 q. h2 |8 s+ _7 L
  58.                 idx = 0;6 |) b0 S; f* g4 ~
  59.             }
    0 }3 e/ ^5 O/ t
  60.         }3 P6 K0 R) X. a
  61.         reader.close();/ u9 X) s1 a- j6 c: P: P# s: O9 u
  62.         if (out != null) {
    , _5 Z, x5 o+ V$ G
  63.             out.flush();+ `- J- ?8 u# w, ]# H+ ?
  64.             out.close();
    . O* V8 l+ l  z0 Q* Y- j% }
  65.         }
    # r  r0 l  Y' U: W; X. w, r# F
  66.     } catch (Exception e) {7 x' S( S% V" J! d2 V, ]
  67.         e.printStackTrace();
    ' \% n1 S# S+ C2 S$ s7 L
  68.     }
    7 C! ^+ s2 \, i. K
  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 编辑
, [4 `. c. D# {, x/ i5 b. u( @8 k+ N5 y
接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情
  I7 a+ L9 {; X" s/ ]8 v先用ebdump提取出词典文本(本文),然后在里面获取单色图的代码(<1F44>开头,<1F64>结尾)
6 v5 E+ {; }! W+ ]" |# X可以看到
) j1 G+ B6 }# X# M) o<1F44><0001><w=200,h=256>xxx<1F64>[0001A4BD:0027]
9 h$ E. m5 r) U这里的w=200,h=256表示图片的尺寸,这个参数后面会用到' f- M/ N, e. l2 l. E5 d2 O# H7 |
然后<1F64>后面的这一段[0001A4BD:0027]就是单色图数据地址了
" c5 R/ U, Q! W- X! u' f6 ~先写个Demo 把所有地址都提取出来,顺便排一下序,去掉重复:
$ c' C4 m. b: r3 f1 j# o. x
  1. static void getMonoTag(String f) {/ G: S% F; M6 j. |( l* D% a0 q
  2.     try {
    7 N( t' j8 C5 R  y1 h
  3.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));& i- f; [+ M. M% [% \% e# n+ a9 |7 H( [
  4.         BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f+".mono.txt"), "UTF-8"));
    5 i% D$ p. D5 X3 ]! b; c
  5.         String line;" j" |5 q) N( s4 x% D0 f
  6.         ArrayList<String> monos = new ArrayList<String>();
    " N5 F/ f9 k5 ]- ^' U4 f# t
  7.         while (((line = reader.readLine()) != null)) {
    ! k$ A) a" e: E2 J
  8.             while (line.contains("<1F64>")) {
    $ s! W- L1 k6 v; ~# n
  9.                 line = line.substring(line.indexOf("<1F64>") + 6);5 w8 |% B6 g; p  x4 K: D
  10.                 monos.add(line.substring(0, 15));3 U% E& ~5 N5 \+ k! O9 ]! o
  11.             }
    : q) f& O, ]# C) |/ h% `
  12.         }, x; K4 x$ ?+ @, r$ g/ a( d" J
  13.         reader.close();
    - L: }1 J8 e0 _4 Z! N6 @; V. B, D' e
  14.         String[] monoa = new String[monos.size()];2 F* E) \- i$ r7 ^+ N( S
  15.         monos.toArray(monoa);: V  o  M; ?5 \) K' u: @
  16.         Arrays.sort(monoa);
    ) h, W+ e! C8 c, N8 D
  17.         String last = "";
    & O0 L+ ?4 E% y
  18.         for (int i=0; i<monoa.length; i++) {) Z+ M9 H& p( W' g* I, T. z! d
  19.             if (!monoa[i].equals(last))
    , Y. Z0 S* d8 x. g' @: L
  20.                 writer.write(monoa[i] + "\r\n");( E' I2 w  l. a, ^# `
  21.             last = monoa[i];( F8 l& A/ A6 a: i# L3 m3 b
  22.         }
    ( v, i6 l! w7 l& u! _0 e
  23.         writer.close();: A$ t0 o6 l& w9 L1 I3 @$ y
  24.     } catch (Exception e) {' e% s. x3 i( L/ ^4 ], m; E
  25.         e.printStackTrace();
    5 _! Q0 q9 {* [2 L+ G6 A& s/ |
  26.     }
    * R, f2 B( h7 l  L' r8 L
  27. }
复制代码
# L! g2 w1 a8 }0 h0 P; {
得到了一个.mono.txt的文件
0 A2 Y6 R' k8 U5 |- K, W然后开始提取:
. i* I% A: a& H上面有提到w=200,h=256这两个参数,不过epwing好像弄反了,200是高,256是宽。 - -2 s- d4 V' B$ o! T7 Q# `
提取过程中需要手动加上图像的文件头,可自行百度bmp文件格式1 k  S& H; }& }: ]
  1. static final int WIDTH = 256;
    % r* `8 v! c- h' d0 |
  2. static final int HEIGHT = 200;+ p# y  x7 p8 P6 F
  3. static final int WIDTH2 = 32;
    ' Y4 }/ n1 g" Z
  4. static final int SIZE = WIDTH2 * HEIGHT;6 z) i' w' z+ Y$ v8 {: e
  5. static final int FILE_LEN = SIZE + 62;
    3 O/ I& }' u( i; ^4 Y
  6. static byte[] filehead = {0x42, 0x4d,
    4 h8 w) z# I3 P
  7.     (byte) (FILE_LEN & 0xff), (byte) ((FILE_LEN >> 8) & 0xff), (byte) ((FILE_LEN >> 16) & 0xff), (byte) ((FILE_LEN >> 24) & 0xff),1 [, V6 h' L0 f! ^$ }
  8.     0, 0, 0, 0, 0x3e, 0, 0, 0};
    / Y4 E9 K6 M; }: a* y' x
  9. static byte[] infohead = {0x28, 0, 0, 0,
    : |1 O. B9 L9 J/ p- D; ?2 Z" f$ C
  10.     (byte) (WIDTH & 0xff), (byte) ((WIDTH >> 8) & 0xff), (byte) ((WIDTH >> 16) & 0xff), (byte) ((WIDTH >> 24) & 0xff),0 a$ _7 N. v' [* a  o7 X
  11.     (byte) (HEIGHT & 0xff), (byte) ((HEIGHT >> 8) & 0xff), (byte) ((HEIGHT >> 16) & 0xff), (byte) ((HEIGHT >> 24) & 0xff),8 X  @6 V4 C$ d. h$ w
  12.     1, 0, 1, 0, 0, 0, 0, 0,
    . g; m' _3 d- Y9 ^. {
  13.     (byte) (SIZE & 0xff), (byte) ((SIZE >> 8) & 0xff), (byte) ((SIZE >> 16) & 0xff), (byte) ((SIZE >> 24) & 0xff),' [: G2 w( d2 s+ g
  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};' ^: i8 e. W/ @' n
  15. static void getMonoPic(String f, String m) {7 b2 n+ h- r1 o7 Z1 b+ F
  16.     try {; H5 z0 M; y& ]+ [# E) Y8 Q) E! Y
  17.         BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f+".txt"), "Shift_JIS"));
    : m# Y- B" f0 S; X% A; f
  18.         BufferedReader reader2 = new BufferedReader(new InputStreamReader(new FileInputStream(m+".txt"), "UTF-8"));/ ]' U& S* O7 T; H' j
  19.         OutputStream out = null;
    ( }5 H% F: {. C5 ?! E! z
  20.         String line = "";
    # m; l( k5 N: ?- y' \* T  @/ f
  21.         String line2 = reader2.readLine();' O; J6 b3 Z5 x5 l5 G: r; L
  22.         int block = 0;' m) D3 j8 d7 J! M2 C
  23.         int block2 = Integer.parseInt(line2.substring(1, 9), 16);" s# Q/ t1 \" ?- m
  24.         int offs = Integer.parseInt(line2.substring(10, 14), 16);7 T7 `, `$ Q" d) \4 i7 W
  25.         byte[] temp = new byte[2048];: @2 \$ Y6 I3 T6 f0 @/ u  T
  26.         byte[] data = new byte[WIDTH2 * HEIGHT];: P( Q$ c& P) f; A
  27.         int[] idxs = new int[WIDTH2 * HEIGHT];; i6 M3 H& U, B, K9 r
  28.         for (int i=0; i<HEIGHT; i++) {7 G* p+ Y: R4 T7 G0 N+ Z& b
  29.             idxs[i * WIDTH2] = (HEIGHT - 1 - i) * WIDTH2;
    3 N8 `  H' {  W4 x% E- e; P
  30.             for (int j=1; j<WIDTH2; j++)
    3 j* s3 ~/ M$ ]
  31.                 idxs[i * WIDTH2 + j] = idxs[i * WIDTH2 + j - 1] + 1;
    / N1 I% w! a8 j5 W2 d' }
  32.         }
    ; f2 W8 h1 B0 @' s$ @
  33.         int idx = 0;
    8 Q. Z0 T' o4 M1 {  W  a& [
  34.         int didx = 0;7 G/ W9 f( z( }" E" U7 r
  35.         while (((line = reader.readLine()) != null)) {
    * Y8 c9 M0 F4 X! ~
  36.             if(line.startsWith("block")) {
    ' T5 j* v' U, O3 O
  37.                 block = Integer.parseInt(line.substring(6, 11), 16);
    2 L/ H) r4 C  B! a4 Q1 w
  38.                 idx = 0;- v9 D, F8 A. C3 Z: N3 M7 I
  39.             }5 f% B8 A& [9 q
  40.             if(line.startsWith("0")) {6 l- @! M3 v+ |' z
  41.                 for(int i=0; i<16; i++) {
      p6 a+ d: h3 W* n
  42.                     int a = CHARS.indexOf(line.charAt(5+3*i));
      R# Z# ?. a. r% K( j6 l
  43.                     int b = CHARS.indexOf(line.charAt(6+3*i));
    * M5 g& q# O. i
  44.                     temp[idx++] = (byte) (a << 4 | b);% @' I) h$ x/ C  G0 n
  45.                 }, `0 Q5 ^3 u& }
  46.             }6 @& v+ @# r  T& l
  47.             if (idx == 2048) {/ F9 ^; ^  A# F# W- `+ K
  48.                 if(block < block2) continue;9 N! t/ s: i' W4 `* k
  49.                 int start = offs;
    2 S$ n$ p& b4 a1 {! G+ X
  50.                 if(didx != 0) start = 0;5 W% O1 d, Q: L+ K
  51.                 for(int i=0; i<2048; i++) {- N9 I' U+ I5 B! e5 o* ]5 I# J2 N' u
  52.                     if(i >= start)! W; R! s# a) A8 v+ _" z
  53.                         data[idxs[didx++]] = temp[i];6 f3 G2 t, I: |( r6 {9 t
  54.                     if(didx == WIDTH2 * HEIGHT) {4 p, c+ l9 X8 y% S5 c$ J: b6 X  I
  55.                         System.out.println(toHex(block2)+"."+toHex(offs));
    1 l+ O: f5 |# q" j6 y% T% _4 b
  56.                         out = new BufferedOutputStream(new FileOutputStream("pic/"+toHex(block2)+toHex(offs)+".bmp"));
    ' r0 V7 W& q: {/ @, z" z4 p
  57.                         out.write(filehead);, b: D/ B$ F' Q% w
  58.                         out.write(infohead);
    % }  F+ X/ r' b1 U; w* a% t
  59.                         out.write(data);
    2 x! `3 p; l1 l, I1 @
  60.                         out.flush();
    0 h# G' Q) B+ M# {" J
  61.                         out.close();
    4 e3 }8 f7 s: l& K
  62.                         line2 = reader2.readLine();
    8 H/ E6 `6 X$ i3 I9 Z
  63.                         if(line2 == null || line2.equals("")) {
    # f8 \+ c1 T% |3 p6 e
  64.                             reader.close();* L5 Y/ m8 k8 J* @1 ?
  65.                             reader2.close();
      ]) m7 ]: m6 [2 ?4 q
  66.                             return;9 _7 r3 Y( O% I& a
  67.                         }
    2 n7 ~. e6 c) w
  68.                         block2 = Integer.parseInt(line2.substring(1, 9), 16);
    . S' y- t0 y8 e3 U
  69.                         offs = Integer.parseInt(line2.substring(10, 14), 16);" t4 W2 `$ f7 U$ }( t" W- m
  70.                         didx = 0;
    9 @% Q- q) c3 Q7 N* x+ k
  71.                     }
    6 A0 S% O( L! L8 e/ L4 V% b
  72.                 }
    ! C' n! G! K5 c% ~
  73.                 idx = 0;2 [9 G& S( @( M
  74.             }
    ' P& J! J# F+ y  a7 F5 v1 {. F
  75.         }8 Q) |" t; K* U6 G+ q" f
  76.         reader.close();
    $ A4 O5 h# N* [4 g5 g- Z3 R5 u
  77.         reader2.close();# l5 Y- }* z$ |8 j
  78.     } catch (Exception e) {
    3 t+ G5 I# m9 R2 e) z* J. [1 F1 i& A
  79.         e.printStackTrace();
    3 h: e( T: ~4 x, q, d
  80.     }
    3 y) w/ `/ U4 h1 x" _5 O' H' s0 \
  81. }
复制代码

% C4 u2 i! @, u8 O4 g% o' J9 }9 e待编辑...
. x$ N0 O% r: J0 \/ B5 C& ]) M) f0 e5 p. h! E4 j" X
回15楼:
( T8 H( {) X/ _& R
能把代码用附件形式上传么?顺便使用说明用英文。
, \9 O0 n. ]; ?4 A  d" m( D
代码有一些要改动的地方, 我完善一下就传附件; d) E1 x4 v& F3 d+ o4 {
另外用英文说明这...{:11_336:} 9 c9 m  K1 ]/ l
我先用中文注释一下, 然后再慢慢翻译

评分

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 | 显示全部楼层
    高手们都歇了,或者对词典不感兴趣。
    , j' c7 q; ^/ q( a* _其实目前新的词典资源,主要集中在iOS、Android应用上,一些数据dat啊,db啊,都有加密,要破解啊,技术含量很高噢。2 U/ q9 F* E5 v; v1 M( I1 o
    -; k! P7 S* q0 X# [+ f4 v
    一些扫描的词典,要做成pdf,基本就只有靠神人出手了。网络合作校对或录入?我从来不觉得这事儿靠谱,志同道合的、对同一语种同一词典感兴趣的人太少太少。慢慢等吧。{:5_214:} 4 W7 c( y$ ~3 O9 m

    该用户从未签到

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

    [LV.5]常住居民I

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

    该用户从未签到

    发表于 2014-2-18 10:51:18 来自手机 | 显示全部楼层
    这个很赞!
    + I2 f( x% g2 \0 p3 v9 t8 k最近打算扒维基来着。

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2014-6-2 14:18:15 | 显示全部楼层
    meigen 发表于 2014-6-2 11:26 9 u6 r. U7 z( E3 I/ f- Y. K8 R
    提取Epwing词典图片的java代码5 S8 J& Q' x: r6 q. q
    Epwing的图片分为两种, 一种是彩图(カラー図版)一种是单色图(モノクロ), 两 ...

    3 r$ k! L; E! c% R8 s. v2 _{:5_227:} / [, P% U6 n' E" G6 ?

    9 O6 C* r3 {4 f" T论坛用了防转载插件还是什么的,复制代码的时候后边会加上一堆乱码。; f3 |, \: a4 @8 g
    能把代码用附件形式上传么?顺便使用说明用英文。
    ; b! m7 n& G. J1 n辛苦辛苦~; g8 E# S3 G+ G4 `8 |8 X

    该用户从未签到

     楼主| 发表于 2014-6-2 19:29:10 | 显示全部楼层
    本帖最后由 Oeasy 于 2014-6-2 19:31 编辑 ' N* o2 [. `0 Y: q& X' X) ^; ^
    meigen 发表于 2014-6-2 17:03
    ' Y& S& N2 J/ q8 ~接14楼, 单色图的提取稍微麻烦些, 他里面只有数据部分而缺少文件头, 这个是比较头疼的事情
    3 }4 F4 Z. }3 t5 C; Y/ {我们可以先到词 ...
    ; E- ^, g: G. R, m

    3 e' f. y& Z: K9 C& N{:10_240:}
    3 s3 K& F+ ^. B+ U3 |
    6 x% m# l- V8 ]3 l! W。。。。
    $ v, h6 `4 ~  J# B  C9 r其实GoldenDict支持EPWING了,尚稍有瑕疵,但已然近乎完美,不敢要求更多,感谢Abs62大神。
    $ l+ M. S! m9 r9 \- d  ^- Q; t' h+ ~http://goldendict.org/forum/viewtopic.php?f=4&t=2922; Y' {- C/ {1 c3 n8 D6 [) U
    http://goldendict.org/forum/view ... =2091&start=300
    ; U* w! t3 y" M9 u* O; i- P不过能把EPWING转出文本 & 图片,制作为dsl、mdx等,进行个性化排版,这些啊,始终是让人愉悦和有成就感的事情。。。{:10_228:} ! B5 I; z0 o1 N0 f/ k6 h( x6 h
    ) N$ d% ]' W# F

    该用户从未签到

    发表于 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++之流甩开几条街了。3 ~+ Z  P& d( b7 P

    该用户从未签到

    发表于 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
    ) ?0 i7 f4 J9 {接14楼,单色图的提取稍微麻烦些,他里面只有数据部分而缺少文件头,这个是比较头疼的事情  C# E# k' o8 _5 r
    先用ebdump提取 ...
    + l% I: _2 ?$ y0 s' q
    好文,谢谢。

    该用户从未签到

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

    本版积分规则

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

    GMT+8, 2026-9-3 07:45 , Processed in 0.028050 second(s), 28 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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